diff --git a/README.md b/README.md index 2380d3b..0c6b39d 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,7 @@ graph TB | [`@node-i3x/pseudo-session-connector`](./packages/pseudo-session-connector) | PseudoSession adapter — implements `IDataSourcePort` using `node-opcua` PseudoSession (embedded in-process, zero network) | ✅ Stable | | [`@node-i3x/rest-server`](./packages/rest-server) | Fastify REST routes implementing the i3X Beta API surface | ✅ Stable | | [`@node-i3x/app`](./packages/app) | Composition root — wires all packages together, entry point | ✅ Stable | +| [`@node-i3x/mcp`](./packages/mcp) | Model Context Protocol (MCP) server — connects Claude, Gemini, Cursor & AI agents to i3X/OPC UA | ✅ Stable | | [`@node-i3x/demo-embedded`](./packages/demo-embedded) | Embedded demo with live dashboard — OPC UA server + i3X API wired via PseudoSession | 🧪 Demo | --- @@ -134,6 +135,39 @@ curl http://127.0.0.1:8000/health --- +## AI Agent Integration (Model Context Protocol) + +Connect AI assistants (Claude Desktop, Google Gemini, Cursor IDE) directly to your factory floor or i3X gateway: + +```bash +# Run the MCP server directly via npx +I3X_SERVER_URL=http://127.0.0.1:8000 npx @node-i3x/mcp +``` + +Add to your `claude_desktop_config.json`: +```json +{ + "mcpServers": { + "node-i3x": { + "command": "npx", + "args": ["-y", "@node-i3x/mcp"], + "env": { + "I3X_SERVER_URL": "http://127.0.0.1:8000" + } + } + } +} +``` + +Now Claude or Cursor can diagnose machinery in single turns: +- `"Inspect Boiler_101. Is current temperature normal according to its schema definition?"` +- `"Explore plant hierarchy and summarize any assets with Bad quality flags."` +- `"Query telemetry trends for Pump_101 over the last 2 hours."` + +See [`packages/mcp`](./packages/mcp) for full documentation. + +--- + ## Configuration All configuration is via environment variables (or `.env` file): diff --git a/biome.json b/biome.json index 1a35af8..6c9d66e 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/2.5.3/schema.json", + "$schema": "https://biomejs.dev/schemas/2.6.3/schema.json", "vcs": { "enabled": true, "clientKind": "git", diff --git a/package-lock.json b/package-lock.json index 4ab556e..bda2d46 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,18 +12,19 @@ "packages/pseudo-session-connector", "packages/rest-server", "packages/app", - "packages/demo-embedded" + "packages/demo-embedded", + "packages/mcp" ], "devDependencies": { - "@biomejs/biome": "^2.5.3", - "@types/node": "^26.1.1", - "@vitest/coverage-v8": "^4.1.10", + "@biomejs/biome": "^2.6.3", + "@types/node": "^26.6.5", + "@vitest/coverage-v8": "^5.0.5", "husky": "^9.1.7", - "lint-staged": "^17.0.8", - "tsup": "^8.5.1", - "turbo": "^2.10.4", + "lint-staged": "^17.6.0", + "tsup": "^9.0.0", + "turbo": "^2.11.10", "typescript": "6", - "vitest": "^4.1.10" + "vitest": "^5.0.5" }, "engines": { "node": ">=20.0.0" @@ -33,30 +34,10 @@ "url": "https://sterfive.com" } }, - "node_modules/@babel/code-frame": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", - "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.29.7", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/code-frame/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==", - "license": "MIT" - }, "node_modules/@babel/helper-string-parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", - "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "version": "7.29.11", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.11.tgz", + "integrity": "sha512-snZbO7MEDOof+hvNa97EjEY7qD7h2kwvQr5AJC3ZhQudKW5dnej6k3kP9NQV88hJwaS8vDqRLFo9rivLEhle2g==", "dev": true, "license": "MIT", "engines": { @@ -67,19 +48,20 @@ "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "version": "7.29.11", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.11.tgz", + "integrity": "sha512-OZ6+oaK7GMyg3IfCpj8JOmn8n+w2rJbDT0LLfVDTLb1ZFeKDh3AiNELgCMUw175IJHSkLl74hG0M0VLsvx+gag==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.29.7" + "@babel/types": "^7.29.11" }, "bin": { "parser": "bin/babel-parser.js" @@ -89,13 +71,13 @@ } }, "node_modules/@babel/types": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "version": "7.29.11", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.11.tgz", + "integrity": "sha512-WCsemW40Cpc6gouC1SrY6PBaZ+oLRlEVY9XBvZBI7il/HyUrb2nJ505wE1MHEFyDZNnrWDEuy4jL50WVHfTTSQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-string-parser": "^7.29.11", "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { @@ -113,9 +95,9 @@ } }, "node_modules/@biomejs/biome": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.5.3.tgz", - "integrity": "sha512-MrJswFdei9EfDwwUy2tQrPDpK0AO+RmMFvBoaaJ6ayBc3sUbHdCE+XG5N8vp+5So41ZupZJQm0roHFFhMGVD7A==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.6.3.tgz", + "integrity": "sha512-va/0xPku7wnfzv+D8Zpdm5uKiGJWiV8neqoEPnRjvNQQwhl4tVXS4fETs4H0CCB2rGeqJ4cu9y4iOZOnOYKAUA==", "dev": true, "license": "MIT OR Apache-2.0", "bin": { @@ -129,20 +111,56 @@ "url": "https://opencollective.com/biome" }, "optionalDependencies": { - "@biomejs/cli-darwin-arm64": "2.5.3", - "@biomejs/cli-darwin-x64": "2.5.3", - "@biomejs/cli-linux-arm64": "2.5.3", - "@biomejs/cli-linux-arm64-musl": "2.5.3", - "@biomejs/cli-linux-x64": "2.5.3", - "@biomejs/cli-linux-x64-musl": "2.5.3", - "@biomejs/cli-win32-arm64": "2.5.3", - "@biomejs/cli-win32-x64": "2.5.3" + "@biomejs/cli-android-arm64": "2.6.3", + "@biomejs/cli-android-x64": "2.6.3", + "@biomejs/cli-darwin-arm64": "2.6.3", + "@biomejs/cli-darwin-x64": "2.6.3", + "@biomejs/cli-linux-arm64": "2.6.3", + "@biomejs/cli-linux-arm64-musl": "2.6.3", + "@biomejs/cli-linux-x64": "2.6.3", + "@biomejs/cli-linux-x64-musl": "2.6.3", + "@biomejs/cli-win32-arm64": "2.6.3", + "@biomejs/cli-win32-x64": "2.6.3" + } + }, + "node_modules/@biomejs/cli-android-arm64": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-android-arm64/-/cli-android-arm64-2.6.3.tgz", + "integrity": "sha512-5JD7QQDEHxdeEb4sftEHG+lsuUyu8Cob/hVLqRELbgGlFl68Rldv/PPi2k4dRjERZ/EItJ3O6Xmv8lqsEtUBiw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-android-x64": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-android-x64/-/cli-android-x64-2.6.3.tgz", + "integrity": "sha512-70WOGKCgpT+Uqg6LFdTLqefV54/DypdZg+LnBQDO6AWvkgXO+9xhVClajQyDsIHYjnXMtI1pRO5sP+zMXlS/bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.21.3" } }, "node_modules/@biomejs/cli-darwin-arm64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.5.3.tgz", - "integrity": "sha512-QhYP9muVQ0nUO5zztFuPbEwi4+94sJWVjaZds9aMi1l/KNZBiUjdiSUrGHsTaMGDXrYl+r4AS2sUKfgH3w+V3g==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.6.3.tgz", + "integrity": "sha512-ezf+XEKeyJ2yYlBhrzyEEHLvfRYrhtNKc6maLzR/WcAcBccb4RVDeFxsymjBve2LO0bpIMRUAiS90D4bUBRT0A==", "cpu": [ "arm64" ], @@ -157,9 +175,9 @@ } }, "node_modules/@biomejs/cli-darwin-x64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.5.3.tgz", - "integrity": "sha512-NC1Ss13UaW7QZX+y8j44bF7AP0jSJdBl6iRhe0MAkvaSqZy+mWg3GaXsrb+eSoHoGDBtaXWEbMVV0iVN2cZ7cQ==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.6.3.tgz", + "integrity": "sha512-Lg2tFdg4elJo+7i707PpLMs6N1hATVt4kqDo6MD/q/VnPs8rsKReKXsz1TA5GNdfRVAQNJ5GRiyK2EwNptK+MA==", "cpu": [ "x64" ], @@ -174,9 +192,9 @@ } }, "node_modules/@biomejs/cli-linux-arm64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.5.3.tgz", - "integrity": "sha512-ksx1KWeyYW18ILL04msF/J4ZBtBDN33znYK8Z/aNv/vlBVxL9/g3mGP+omgHJKy4+KWbK87vcmmpmurfNjSgiA==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.6.3.tgz", + "integrity": "sha512-8Stcvq98n1gs9VyLKuaWrnsd8kbXE2nKDAHtuLHGSYdGyNWN5JIIm5a28xdnmgdKzKHmiDgYyATetkEv7+zGow==", "cpu": [ "arm64" ], @@ -191,9 +209,9 @@ } }, "node_modules/@biomejs/cli-linux-arm64-musl": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.5.3.tgz", - "integrity": "sha512-fccix0w6xp6csCXgxeC0dU/3ecgRQal0y+cv2SP9ajNlhe7Yrk2Ug7UDe2j9AT9ZDYitkXpvUKgZjjuoYeP4Vg==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.6.3.tgz", + "integrity": "sha512-dYU70A89OFHzakQPE9VOPbE60JNcQt4mtxvUGQl+EgTkGtqCFxLD2RUn1SbiMu8Mu5xFscS1bfYDpoasaUrqNA==", "cpu": [ "arm64" ], @@ -208,9 +226,9 @@ } }, "node_modules/@biomejs/cli-linux-x64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.5.3.tgz", - "integrity": "sha512-yMkJtilsgvILDcVkh187aVLTb64xYsrxYajx5kym+r1ULkO5HUOfu9AYKLGQbOVLwJtT2utNw7hhFNg+17mUYA==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.6.3.tgz", + "integrity": "sha512-CShmx0bO6BngywT3minv8K1xsQX1ig1vsBqYTLnmDY3mBiDYHlaLRIsdHoM1pEU9dV3BN5a0uiH0IGDtYh9TWA==", "cpu": [ "x64" ], @@ -225,9 +243,9 @@ } }, "node_modules/@biomejs/cli-linux-x64-musl": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.5.3.tgz", - "integrity": "sha512-O/yU9YKRUiHhmcjF2f38PSjseVk3G4VLWYc0G2HWpzdBVREV6G8IGWIVEFf7MFPfWIzNUIvPsEjeAZQIOgnLcQ==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.6.3.tgz", + "integrity": "sha512-j6eFjUcWSphmgVTbrobEMA0wdbfNHKrGi8hRsFkc17jeS1n7nHwFACxp6jWqe9sxQqyFAeyOgt2/1bOGVcbATA==", "cpu": [ "x64" ], @@ -242,9 +260,9 @@ } }, "node_modules/@biomejs/cli-win32-arm64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.5.3.tgz", - "integrity": "sha512-cX5z+GYwRcqEok0AH3KSfQGgqYd0Nomfp6Fbe1uiTtELE38hdH2k842wQ9wLNaF/JJ7r4rjJQ4VR+ce+fRmQbw==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.6.3.tgz", + "integrity": "sha512-00SthDxBPwNiT7IL/mOneif6fiEU1PXK875zhr+InpeZjovY1mF5tCuDhXo1Hh0GYyiKHKzLbItzn58SAyLhJQ==", "cpu": [ "arm64" ], @@ -259,9 +277,9 @@ } }, "node_modules/@biomejs/cli-win32-x64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.5.3.tgz", - "integrity": "sha512-ExSaJWi4/u6+GXCszlSKpWSjKNbDseAYqqkCznsCsZ/4uidZ/BEqsCc5/3ctlq6dfIubdIIRSVLC/PG9xPl70Q==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.6.3.tgz", + "integrity": "sha512-GhtOPphBWlnCepqpNk/w5eGN5oGRCzL20EbAkL1XCIpyboeVC9R642noyT43l8LSenGS4qz9IL8sKPfwY37V/Q==", "cpu": [ "x64" ], @@ -275,44 +293,10 @@ "node": ">=14.21.3" } }, - "node_modules/@emnapi/core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", - "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.2", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", - "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", - "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", - "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz", + "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==", "cpu": [ "ppc64" ], @@ -327,9 +311,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", - "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz", + "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==", "cpu": [ "arm" ], @@ -344,9 +328,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", - "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz", + "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==", "cpu": [ "arm64" ], @@ -361,9 +345,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", - "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz", + "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==", "cpu": [ "x64" ], @@ -378,9 +362,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", - "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz", + "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==", "cpu": [ "arm64" ], @@ -395,9 +379,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", - "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz", + "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==", "cpu": [ "x64" ], @@ -412,9 +396,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", - "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz", + "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==", "cpu": [ "arm64" ], @@ -429,9 +413,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", - "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz", + "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==", "cpu": [ "x64" ], @@ -446,9 +430,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", - "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz", + "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==", "cpu": [ "arm" ], @@ -463,9 +447,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", - "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz", + "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==", "cpu": [ "arm64" ], @@ -480,9 +464,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", - "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz", + "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==", "cpu": [ "ia32" ], @@ -497,9 +481,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", - "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz", + "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==", "cpu": [ "loong64" ], @@ -514,9 +498,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", - "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz", + "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==", "cpu": [ "mips64el" ], @@ -531,9 +515,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", - "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz", + "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==", "cpu": [ "ppc64" ], @@ -548,9 +532,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", - "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz", + "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==", "cpu": [ "riscv64" ], @@ -565,9 +549,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", - "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz", + "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==", "cpu": [ "s390x" ], @@ -582,9 +566,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", - "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz", + "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==", "cpu": [ "x64" ], @@ -599,9 +583,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", - "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz", + "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==", "cpu": [ "arm64" ], @@ -616,9 +600,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", - "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz", + "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==", "cpu": [ "x64" ], @@ -633,9 +617,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", - "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz", + "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==", "cpu": [ "arm64" ], @@ -650,9 +634,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", - "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz", + "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==", "cpu": [ "x64" ], @@ -667,9 +651,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", - "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz", + "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==", "cpu": [ "arm64" ], @@ -684,9 +668,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", - "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz", + "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==", "cpu": [ "x64" ], @@ -701,9 +685,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", - "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz", + "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==", "cpu": [ "arm64" ], @@ -718,9 +702,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", - "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz", + "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==", "cpu": [ "ia32" ], @@ -735,7 +719,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.27.7", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz", + "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==", "cpu": [ "x64" ], @@ -785,9 +771,9 @@ } }, "node_modules/@fastify/compress": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@fastify/compress/-/compress-9.0.0.tgz", - "integrity": "sha512-PZRg+ut5xd/ubsGPWfoPNryoCOtEdHboIWpDieTUHov1gKdLitF8mRmT3JbqNnRbelQXSNXUsIpakAEKR6AcTQ==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@fastify/compress/-/compress-9.2.2.tgz", + "integrity": "sha512-FF1CSw1ED4f2lZmYDXmpHgDJLj752JBr7Tdv6Z5SYkZmbvwzlagWwKvF3OGWPzbL7pRFgoki6rNyh/yu8tb92w==", "funding": [ { "type": "github", @@ -801,17 +787,14 @@ "license": "MIT", "dependencies": { "@fastify/accept-negotiator": "^2.0.0", - "fastify-plugin": "^5.0.0", - "mime-db": "^1.52.0", - "minipass": "^7.0.4", - "peek-stream": "^1.1.3", - "readable-stream": "^4.5.2" + "fastify-plugin": "^6.0.0", + "mime-db": "^1.52.0" } }, "node_modules/@fastify/cors": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/@fastify/cors/-/cors-11.3.0.tgz", - "integrity": "sha512-ggQGua+xHv1MvePbPr0v//xLYEsCXbWspquXCJS9Ot5YoRXq8J8ZWzHnxDBVnbtXosvistXo6LtNzOJswf64Fw==", + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/@fastify/cors/-/cors-11.3.1.tgz", + "integrity": "sha512-gZXNzd6FLHzOIfvoK4+Az3Wko2V6Y0MIsLxpyo4AEYl7a9q1JBPwPaxLea4nkr++8FCiJiPpYYo6E02uZW0dqw==", "funding": [ { "type": "github", @@ -828,22 +811,6 @@ "toad-cache": "^3.7.0" } }, - "node_modules/@fastify/cors/node_modules/fastify-plugin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-6.0.0.tgz", - "integrity": "sha512-fZOty7z3O7vOliF6d8bHE3wiEh1KcNnKEQensSgTk9C1DvN6nRLS++XVd86v33Hw/8u9Un8A1zDrQ8ujcQDHEg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, "node_modules/@fastify/error": { "version": "4.2.0", "funding": [ @@ -925,9 +892,9 @@ } }, "node_modules/@fastify/send": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@fastify/send/-/send-4.1.0.tgz", - "integrity": "sha512-TMYeQLCBSy2TOFmV95hQWkiTYgC/SEx7vMdV+wnZVX4tt8VBLKzmH8vV9OzJehV0+XBfg+WxPMt5wp+JBUKsVw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@fastify/send/-/send-4.2.0.tgz", + "integrity": "sha512-B5Hr+IFsPbqJJQu6FHE2MFpnHfbPlCOVQUPTdm6PxCcilYGrEQsulbO0z9blgbjndIyLJwa2NWFIIjXpPhbwUg==", "funding": [ { "type": "github", @@ -948,9 +915,9 @@ } }, "node_modules/@fastify/static": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@fastify/static/-/static-9.1.3.tgz", - "integrity": "sha512-aXrYtsiryLhRxRNaxNqsn7FUISeb7rB9q4eHUPIot5aeQBLNahnz1m6thzm7JWC1poSGXS9XrX8DvuMivp2hkQ==", + "version": "10.1.7", + "resolved": "https://registry.npmjs.org/@fastify/static/-/static-10.1.7.tgz", + "integrity": "sha512-7+lUiPRraENCiULgjhcqZyWSW6qnwIT87Is0u3c2Z3iGEEEGB45wJhYxzrSdzu12gHM4qcviEYcPEiCe4J6MCQ==", "funding": [ { "type": "github", @@ -964,17 +931,18 @@ "license": "MIT", "dependencies": { "@fastify/accept-negotiator": "^2.0.0", + "@fastify/error": "^4.0.0", "@fastify/send": "^4.0.0", - "content-disposition": "^1.0.1", - "fastify-plugin": "^5.0.0", + "content-disposition": "^3.0.0", + "fastify-plugin": "^6.0.0", "fastq": "^1.17.1", "glob": "^13.0.0" } }, "node_modules/@fastify/swagger": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/@fastify/swagger/-/swagger-9.8.0.tgz", - "integrity": "sha512-GdRkUboXu++nChrmWM22SNDkabB529TL7cQ4RDsPDP76ro1kSW1cLIEZ9S8ZUbJKYUciHgLAgiX8SHzCnqZdnQ==", + "version": "9.9.2", + "resolved": "https://registry.npmjs.org/@fastify/swagger/-/swagger-9.9.2.tgz", + "integrity": "sha512-ayxItVgf/1axBvw33lqsA5ns02YMpT1r59G/HCJraRNWWBzvLgN+oiCBPhuzTiN67TvctlCYkG0+40WLKYuusQ==", "funding": [ { "type": "github", @@ -995,9 +963,9 @@ } }, "node_modules/@fastify/swagger-ui": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@fastify/swagger-ui/-/swagger-ui-6.1.0.tgz", - "integrity": "sha512-vbhHlJvzXujGco+6yumjt4cwptzb+0ZezPvApFSI+62IdJCfHtjpJrFIT+ln3BCB+KVFiUkI1Y+L9adIGmvdHQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@fastify/swagger-ui/-/swagger-ui-6.1.2.tgz", + "integrity": "sha512-rG5EvbuzzH38XYULa9OVrSg3XngXlHmPFbuU4MKdrzx/lGHCvfPITIy7twnECBf7Ws4t2ZvwMa5UUe0T2+V49w==", "funding": [ { "type": "github", @@ -1010,44 +978,24 @@ ], "license": "MIT", "dependencies": { - "@fastify/static": "^9.1.2", + "@fastify/static": "^10.1.0", "fastify-plugin": "^6.0.0", "openapi-types": "^12.1.3", "rfdc": "^1.3.1", "yaml": "^2.4.1" } }, - "node_modules/@fastify/swagger-ui/node_modules/fastify-plugin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-6.0.0.tgz", - "integrity": "sha512-fZOty7z3O7vOliF6d8bHE3wiEh1KcNnKEQensSgTk9C1DvN6nRLS++XVd86v33Hw/8u9Un8A1zDrQ8ujcQDHEg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "node_modules/@fastify/swagger/node_modules/fastify-plugin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-6.0.0.tgz", - "integrity": "sha512-fZOty7z3O7vOliF6d8bHE3wiEh1KcNnKEQensSgTk9C1DvN6nRLS++XVd86v33Hw/8u9Un8A1zDrQ8ujcQDHEg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" + "node_modules/@hono/node-server": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.5.tgz", + "integrity": "sha512-MgP/I06GdvsilDspMk/qmRzpk8LOUStP6jFAbSRi40W09DhoyUn+Mj7eyKICPqeYKybOjVFLVIAQzvu1bfIa7Q==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "hono": "^4 || ^5.0.0-0" + } }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", @@ -1071,7 +1019,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", + "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", "dev": true, "license": "MIT" }, @@ -1101,23 +1051,61 @@ "node": ">=8" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", - "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", - "dev": true, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.32.2", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.32.2.tgz", + "integrity": "sha512-SWsVtH/0vULSQStoZ6xxH2K09Li8fXYTMC64ZeogCdpZ3XSi1eCPOByV1OpuJxuI3OcmHhosDWYyii07tpPsLw==", "license": "MIT", - "optional": true, "dependencies": { - "@tybys/wasm-util": "^0.10.3" + "@hono/node-server": "^1.19.9 || ^2.0.5", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.2.1", + "express-rate-limit": "^8.2.1", + "hono": "^4.11.4", + "jose": "^6.1.3", + "json-schema-typed": "^8.0.2", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" + "engines": { + "node": ">=18" }, "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + }, + "zod": { + "optional": false + } + } + }, + "node_modules/@napi-rs/lzma-linux-x64-gnu": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", + "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^22.20 || ^24.12 || >=25" } }, "node_modules/@node-i3x/app": { @@ -1132,6 +1120,10 @@ "resolved": "packages/demo-embedded", "link": true }, + "node_modules/@node-i3x/mcp": { + "resolved": "packages/mcp", + "link": true + }, "node_modules/@node-i3x/opcua-connector": { "resolved": "packages/opcua-connector", "link": true @@ -1145,139 +1137,202 @@ "link": true }, "node_modules/@oxc-project/types": { - "version": "0.139.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.139.0.tgz", - "integrity": "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==", + "version": "0.155.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.155.0.tgz", + "integrity": "sha512-SeE8JPwW1xs1tHeNycjUtUBdhorRa8o4jlvjwk49R7/Z291i+4DQa7JJIgOm/TaYQZx+QrPQbVJ/9c8dMIZN8Q==", "dev": true, "license": "MIT", + "peer": true, "funding": { - "url": "https://github.com/sponsors/Boshen" + "url": "https://github.com/sponsors/oxc-project" + } + }, + "node_modules/@peculiar/asn1-asym-key": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-asym-key/-/asn1-asym-key-2.11.1.tgz", + "integrity": "sha512-YtXR0FbDtjHuNGvWXD4HFE7th5xYwG67O+ApDH/FZsjj5MOrWHzDvqwZ1vm6uFUJtMAkUDcF6VMPGOJ5gnLyUA==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-pkcs8": "^2.11.1", + "@peculiar/asn1-schema": "^2.11.1", + "@peculiar/asn1-x509": "^2.11.1", + "asn1js": "^3.0.10", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" } }, "node_modules/@peculiar/asn1-cms": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.8.0.tgz", - "integrity": "sha512-NgekZOrSJFSBFLFoLfwePguAWAx7z1+f2TEsWFUMyiqqfntZ4+S/S5hzqME3q4pCA0iOsFKdwiQ35dwY24eVqA==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.11.1.tgz", + "integrity": "sha512-Bk+oatE62dW0Tzzpfk6vdQxfGGEfvuGdWgmijnKjcv7HqZCJISs85z4zw2uDArrk+R1Oel1wts/BBl7HHrtAcA==", "license": "MIT", "dependencies": { - "@peculiar/asn1-schema": "^2.8.0", - "@peculiar/asn1-x509": "^2.8.0", - "@peculiar/asn1-x509-attr": "^2.8.0", + "@peculiar/asn1-schema": "^2.11.1", + "@peculiar/asn1-x509": "^2.11.1", + "@peculiar/asn1-x509-attr": "^2.11.1", "asn1js": "^3.0.10", "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" } }, "node_modules/@peculiar/asn1-csr": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.8.0.tgz", - "integrity": "sha512-akbF8+uvleHs8sejNPQxwmVFuInAg6FMNHOwMILXfP518YfFJwdR3jr6oNUPOaEJfuEhn/vkNOCIT6ASUd4mbg==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.11.1.tgz", + "integrity": "sha512-KVfbXaKng8886/tOPG55t5K1XkTkGbR4amjIJzytXWobFU5nZgw/sKnSpa1hxP17nUSsrOF/7Mt9WUYeyLsi6Q==", "license": "MIT", "dependencies": { - "@peculiar/asn1-schema": "^2.8.0", - "@peculiar/asn1-x509": "^2.8.0", + "@peculiar/asn1-schema": "^2.11.1", + "@peculiar/asn1-x509": "^2.11.1", "asn1js": "^3.0.10", "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" } }, "node_modules/@peculiar/asn1-ecc": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.8.0.tgz", - "integrity": "sha512-ohwlk+u9Rv2NOAY1c6MfHj45ATVF8R1DUN/WCgABiRtLi2ZftlZWZX7KvpAbU8v9xPcmoILfELeEABj/rn18AQ==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.11.1.tgz", + "integrity": "sha512-7MSNji77fQa/oN3WAfwagMy8EoJFg50sW4hZ1dtr0zU1BSugit0I2DGpIdPhvkNplopQhz5bogxpn1077eaamA==", "license": "MIT", "dependencies": { - "@peculiar/asn1-schema": "^2.8.0", - "@peculiar/asn1-x509": "^2.8.0", + "@peculiar/asn1-schema": "^2.11.1", + "@peculiar/asn1-x509": "^2.11.1", "asn1js": "^3.0.10", "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" } }, "node_modules/@peculiar/asn1-pfx": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.8.0.tgz", - "integrity": "sha512-5yof1ytoB++RQtaFbqSUJ8pxDJtZT6vbVqZ8XoJ61ph7UjNVvfFwAilnCodqkNsAodpy13gDhoxZXw00pghnyg==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.11.1.tgz", + "integrity": "sha512-2SN2z8qkc2hk/GgTYA8RN54wtsCDZShg9gI2Mq1vLhdj1adcv5fhTbiEmExZUaAMqlizxiEpULQDfHM5iYtn1g==", "license": "MIT", "dependencies": { - "@peculiar/asn1-cms": "^2.8.0", - "@peculiar/asn1-pkcs8": "^2.8.0", - "@peculiar/asn1-rsa": "^2.8.0", - "@peculiar/asn1-schema": "^2.8.0", + "@peculiar/asn1-cms": "^2.11.1", + "@peculiar/asn1-pkcs8": "^2.11.1", + "@peculiar/asn1-rsa": "^2.11.1", + "@peculiar/asn1-schema": "^2.11.1", "asn1js": "^3.0.10", "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" } }, "node_modules/@peculiar/asn1-pkcs8": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.8.0.tgz", - "integrity": "sha512-qAKXtLpBEw9LqhKpjw3ajZSXlBur+ipW+y2ivVBQAG6F6qRx94yO+1ZR4mvw+YaCfKSaOzLeYEzsPaBp4SJELA==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.11.1.tgz", + "integrity": "sha512-HqsSrnpQghRp9SM9QSmR6fa4z/BNktnKq7928+oq4qF0VAnuHZ4cyePKvcxh9fP4taBCP/WHNItlVNsYaQm2qw==", "license": "MIT", "dependencies": { - "@peculiar/asn1-schema": "^2.8.0", - "@peculiar/asn1-x509": "^2.8.0", + "@peculiar/asn1-schema": "^2.11.1", + "@peculiar/asn1-x509": "^2.11.1", "asn1js": "^3.0.10", "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" } }, "node_modules/@peculiar/asn1-pkcs9": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.8.0.tgz", - "integrity": "sha512-b5nDWCnkV60+cQ141D6sVVwK9nz64R5n3zSVnklGd+ECdkW2Ol3U1a6yYFlalpSOaD557yuJB64A+q42jG7lUQ==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.11.1.tgz", + "integrity": "sha512-OHFkTg8D2zYafILqFE4KPbqX8srpvd3diGDc2h2cduumawc765mOHGcuFMGvLWlL2bbCMWMmMSCtlXptsOuiPA==", "license": "MIT", "dependencies": { - "@peculiar/asn1-cms": "^2.8.0", - "@peculiar/asn1-pfx": "^2.8.0", - "@peculiar/asn1-pkcs8": "^2.8.0", - "@peculiar/asn1-schema": "^2.8.0", - "@peculiar/asn1-x509": "^2.8.0", - "@peculiar/asn1-x509-attr": "^2.8.0", + "@peculiar/asn1-cms": "^2.11.1", + "@peculiar/asn1-pfx": "^2.11.1", + "@peculiar/asn1-pkcs8": "^2.11.1", + "@peculiar/asn1-schema": "^2.11.1", + "@peculiar/asn1-x509": "^2.11.1", + "@peculiar/asn1-x509-attr": "^2.11.1", "asn1js": "^3.0.10", "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" } }, "node_modules/@peculiar/asn1-rsa": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.8.0.tgz", - "integrity": "sha512-zHEUlCqB2mk7x2lxDwHHJy7hWZOPdGHVlsmITWKB5/PbQo61atbu9PJ/0r9dQNMwFzbKPXZ8uK8/91eUhRznSg==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.11.1.tgz", + "integrity": "sha512-6KwKGjulF489CpidZqkogNgLj6oGzgC4BL2FClM8PuJQ4t5NqT4q4a6A4vrSxBIBhMnL8hGYkLOpbVw0Vq38Tw==", "license": "MIT", "dependencies": { - "@peculiar/asn1-schema": "^2.8.0", - "@peculiar/asn1-x509": "^2.8.0", + "@peculiar/asn1-schema": "^2.11.1", + "@peculiar/asn1-x509": "^2.11.1", "asn1js": "^3.0.10", "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" } }, "node_modules/@peculiar/asn1-schema": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.8.0.tgz", - "integrity": "sha512-7YT0U/ze0tF2QOBbE15gKZwy5tvgGyLRiRHLzhlbOpf7BT032oBSd0haZqXn5W6l26WLlu3dyxzjM+2638/z2Q==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.11.1.tgz", + "integrity": "sha512-jaU9OaCcbZUdyXx9hMETZB9xoNmxTGjOGFqd3cOwKFkpKnyKd9WxF3uqj4PvX4cyOMP9bSdHg5YyML2qtx/d/g==", "license": "MIT", "dependencies": { "@peculiar/utils": "^2.0.2", "asn1js": "^3.0.10", "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" } }, "node_modules/@peculiar/asn1-x509": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.8.0.tgz", - "integrity": "sha512-N0CMuhWUzsWEVq6F1q9X6+VKUnWzSW+cSVg+aPaGGwDdbFoFWTYgin5MHwXgpWd6y9COMBxnfy/Qc+Xc7F0Zwg==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.11.1.tgz", + "integrity": "sha512-SXU4/X6B3FquqQAN6ARI0bFDUV7+L1WlvPEPMKzEMkstd2D7UyM0r93fv241+OjdhqAKYGx5MvV3gzZMAp0APA==", "license": "MIT", "dependencies": { - "@peculiar/asn1-schema": "^2.8.0", + "@peculiar/asn1-schema": "^2.11.1", "@peculiar/utils": "^2.0.2", "asn1js": "^3.0.10", "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" } }, "node_modules/@peculiar/asn1-x509-attr": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.8.0.tgz", - "integrity": "sha512-tHjkfS/qhMnmrlB2J9NhflQlQ7In3khO3CfmVrriOlpTeErY9ZIKOso1hQ5JQiyrJ7ShvqVPk7E5fQmbclkSKA==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.11.1.tgz", + "integrity": "sha512-n7RKFrbTzt8pGBlZ90kmKEn1qsLTTyw7lrvHMK0xsA42kQugPk/GXYpNbEcl7DkkdVsU/one5UX7KQPfxLj8vQ==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.11.1", + "@peculiar/asn1-x509": "^2.11.1", + "asn1js": "^3.0.10", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@peculiar/asn1-x509-post-quantum": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-post-quantum/-/asn1-x509-post-quantum-2.11.1.tgz", + "integrity": "sha512-yD/pxCQ97nzwF7MGAW4kRd1WVLiMPhD39HxOnAr38DfGFwbpVhPnMbq+r6WX0XUrxn4w8ulsTdUafwVl46igLA==", "license": "MIT", "dependencies": { - "@peculiar/asn1-schema": "^2.8.0", - "@peculiar/asn1-x509": "^2.8.0", + "@peculiar/asn1-asym-key": "^2.11.1", + "@peculiar/asn1-schema": "^2.11.1", + "@peculiar/asn1-x509": "^2.11.1", "asn1js": "^3.0.10", "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" } }, "node_modules/@peculiar/json-schema": { @@ -1318,18 +1373,19 @@ } }, "node_modules/@peculiar/x509": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-2.0.0.tgz", - "integrity": "sha512-r10lkuy6BNfRmyYdRAfgu6dq0HOmyIV2OLhXWE3gDEPBdX1b8miztJVyX/UxWhLwemNyDP3CLZHpDxDwSY0xaA==", - "license": "MIT", - "dependencies": { - "@peculiar/asn1-cms": "^2.6.0", - "@peculiar/asn1-csr": "^2.6.0", - "@peculiar/asn1-ecc": "^2.6.0", - "@peculiar/asn1-pkcs9": "^2.6.0", - "@peculiar/asn1-rsa": "^2.6.0", - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.0", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-2.2.0.tgz", + "integrity": "sha512-adpW58ySPQMOUPv8pTKT3RIyCFqfUFt8X05ukPdtkQToXDVr8dMtxuenik1yx8tNFTbpApWsM/Hi5SzlIx48+Q==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.11.0", + "@peculiar/asn1-csr": "^2.11.0", + "@peculiar/asn1-ecc": "^2.11.0", + "@peculiar/asn1-pkcs9": "^2.11.0", + "@peculiar/asn1-rsa": "^2.11.0", + "@peculiar/asn1-schema": "^2.11.0", + "@peculiar/asn1-x509": "^2.11.0", + "@peculiar/asn1-x509-post-quantum": "^2.11.0", "pvtsutils": "^1.3.6", "tslib": "^2.8.1", "tsyringe": "^4.10.0" @@ -1342,10 +1398,28 @@ "version": "0.4.0", "license": "MIT" }, + "node_modules/@rolldown/binding-android-arm-eabi": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.15.tgz", + "integrity": "sha512-aLcgK9gIJ3YRvrrtfSBbRa27F5WrpiTaPulnFpsHPxpUHgFlSgnU4854MHwoRGEBhfRJDWCS2WQ7lIjskE9Olw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.5.tgz", - "integrity": "sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.15.tgz", + "integrity": "sha512-xD7DdZCrbThKuxNg7ooQmvp07ys4J/pnSEMTG3/OdOWl6daC67m/Q4fL78sRHMxTH/N4fGUbYhcPM0MF5WFHkg==", "cpu": [ "arm64" ], @@ -1355,14 +1429,15 @@ "os": [ "android" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.5.tgz", - "integrity": "sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.15.tgz", + "integrity": "sha512-m2WuQ6r0B4OTYxyPpNLtXaMRbRDUbG8YQV2Q3KTdSSK8Th6KHCnC8jVCJt8bvYeSB5WivkkNbc85mKadaSdOxA==", "cpu": [ "arm64" ], @@ -1372,14 +1447,15 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.5.tgz", - "integrity": "sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.15.tgz", + "integrity": "sha512-5RtnsHM36nodM9WbMy+zip0LGS/G+y5wro5RHrpOlr4ac24+1zSi9kiV2MP1myZeZ/ifEHfulQcWjnAXzc2C2A==", "cpu": [ "x64" ], @@ -1389,14 +1465,15 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.5.tgz", - "integrity": "sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.15.tgz", + "integrity": "sha512-g3l09pyFqhu+135JKkbkwiKGQmwU5hUMUPJ4VdBADvuqR8d33L6H578rh8m7rtxbdp+VmX/+nzI7nvhSZlzpUQ==", "cpu": [ "x64" ], @@ -1406,14 +1483,15 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.5.tgz", - "integrity": "sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.15.tgz", + "integrity": "sha512-nIe3VugI97nGQtspPxDqA4sXMUpeiocKIP/CqpY/u/vgbT+alX+cVxu1C/oVBPKg4feNTmYovE91v4DgXvXNwQ==", "cpu": [ "arm" ], @@ -1423,14 +1501,15 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.5.tgz", - "integrity": "sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.15.tgz", + "integrity": "sha512-iTBjXx+B5QSvgI89lJfmqh4wTh8NabR1YZIIN3hNx4zSG0EVfVqkOvLulNpG4251pbd6/IAmZ/LefVk1Y4rPhw==", "cpu": [ "arm64" ], @@ -1440,14 +1519,15 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.5.tgz", - "integrity": "sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.15.tgz", + "integrity": "sha512-uN26XOnVR7rqQupG3V9oAG2EGGatWjcJHOeDOHUFCh4TBWmP2tHTFoVN13aYbwfm0aHqJAEmcwhAu6sooIjfqQ==", "cpu": [ "arm64" ], @@ -1457,14 +1537,15 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.5.tgz", - "integrity": "sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.15.tgz", + "integrity": "sha512-9nWkcdd+H+XhaA3fQIwpHnKIrfx/PQ6rO0pivr78Og07tXlUlctBBJoEYLPfhTmCR/QxEVdn6uPjHV5SymPhdw==", "cpu": [ "ppc64" ], @@ -1474,14 +1555,15 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.5.tgz", - "integrity": "sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.15.tgz", + "integrity": "sha512-Ggh0ciFjLwIusLSLz7LZYEaGdxOAUJXI+Qu5JCbhPJJHEt8vP+IjRATTJheiJsdzzTYgUiHUiw3X1Ea3ZpMBdA==", "cpu": [ "s390x" ], @@ -1491,14 +1573,15 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.5.tgz", - "integrity": "sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.15.tgz", + "integrity": "sha512-FHg60rS6DBePAYZ9X9F67x+JObFdmgn6tupA1C/a3B+CufFmTD4mX+e8M75tCiAO3foR/6xwVBI0KQiI7sn/rw==", "cpu": [ "x64" ], @@ -1508,14 +1591,15 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.5.tgz", - "integrity": "sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.15.tgz", + "integrity": "sha512-/cvV/7v5VGz/moiz0XKRj2dE8DzsKyhIu1KpOvJGPjRywg3yscON889UGvAe8zfiJLHup7VLjBduoGWi3HusWQ==", "cpu": [ "x64" ], @@ -1525,14 +1609,15 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.5.tgz", - "integrity": "sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.15.tgz", + "integrity": "sha512-MyzC5Hrv/sm+Z7TSGKP/j8001RO2xQm1zOpCNVL4j0cY/VhBZviludA2YFQ7i4lH6ZAXxQm0lcMdBzM+99mE7w==", "cpu": [ "arm64" ], @@ -1542,33 +1627,15 @@ "os": [ "openharmony" ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.5.tgz", - "integrity": "sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.11.1", - "@emnapi/runtime": "1.11.1", - "@napi-rs/wasm-runtime": "^1.1.6" - }, + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.5.tgz", - "integrity": "sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.15.tgz", + "integrity": "sha512-+PgYiS+AH5omy6L45ZLxybasauJaj3M8buoT83D+nzPmCayXlxUV9hydhciCKVyIg0B/v0BtXPDE1uGqNwCPpg==", "cpu": [ "arm64" ], @@ -1578,14 +1645,15 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.5.tgz", - "integrity": "sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.15.tgz", + "integrity": "sha512-HFZd2QNQYn1JbIi+Hpd7H+r/lkWxcfIu28nirZ6eCn2LafuvmExMlb/P96Sfx5tf7pPArw39IdhmCF8vmV+NhQ==", "cpu": [ "x64" ], @@ -1595,6 +1663,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -1604,12 +1673,13 @@ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.61.1.tgz", - "integrity": "sha512-JnBB8MdXj45cajvTuO5FmPlvFVJRQgvrz1uSEl3NwqFnReAPGwb8EanbGi4z2nRaqLzjJSv5/JmycoTKlRZxHA==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.65.0.tgz", + "integrity": "sha512-t2AnVba25baFdq7gczzS13JyVcdubLVbFX1X04mxrggDrTQPUXNv3XM0k9H1hr5tqvg7AVvtQ720QHAj0iYqhg==", "cpu": [ "arm" ], @@ -1621,9 +1691,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.61.1.tgz", - "integrity": "sha512-Jx2g7iSjw4AOT0HDPHM9RV3GNjRXwybWtSFZiZAYUTjUwjVrYIwq3kBf+LnhqJlzXFAqTAh2F7IGI+O568exPw==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.65.0.tgz", + "integrity": "sha512-dNONUaEwPGhl/nuO2KV8VABWlcjYyU6KtZGN8dQv5OS5JU7JSCxPijVNKXbRJd0iuTzTiJ4TjPt/4bbvDRNiMQ==", "cpu": [ "arm64" ], @@ -1635,9 +1705,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.61.1.tgz", - "integrity": "sha512-0F1L/Z3Eqv8mT2n3dCpeO8GcTvHvVqkP5/t6DMsn0KzhYVcg+s7Ncl5DS8qjKYEeio6Az0Gt6nyBORay5qIlCA==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.65.0.tgz", + "integrity": "sha512-zWQqUH+9zavr2Bxuzfpuv2SIF3X31cr58TvSQC9o1GhpOvkqRwr60GkZdQcudyT/BEgdpdSafjgd2I13MbTL7g==", "cpu": [ "arm64" ], @@ -1649,9 +1719,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.61.1.tgz", - "integrity": "sha512-qLttcH871ujY4YcVfUSShhOw+CsoTatYz8gRbHO7Bb92QH059/P0y5do1KMs41fY0BpD2x4AJH/gID0zFiqVKQ==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.65.0.tgz", + "integrity": "sha512-RQYreBFWtO4//hIuOaZkYUnF/lPU4lz35dveDimDshWCJvVisVtJ/shmT9bkXK8wFJY+FJF89X6F3Cq1qI3LCw==", "cpu": [ "x64" ], @@ -1663,9 +1733,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.61.1.tgz", - "integrity": "sha512-fUI4RapGE0Oh3mb8mgfvC1O2nU1RpDZUKnDQm3xB1Ipg7C2wTs5Kstz7G2uWK99a8S2yTMq8/P4uycwNa0nJyw==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.65.0.tgz", + "integrity": "sha512-A0NfMj6Cuh/9BE5k3awJKv6HoxFVXIcLAb6SZqAMoxUHPA1ZNNK4RsGuUPD/vL7nEAm9LG+ZzXWWTrnC0XtkpA==", "cpu": [ "arm64" ], @@ -1677,9 +1747,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.61.1.tgz", - "integrity": "sha512-H5YrdvJaDtI/U9/emrD4b++xkvp3y/JvOe4rizHbxvkyMfRS/CiRYdji+Pl8D0brEaNFWUh1drQxgAGIl6Xudw==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.65.0.tgz", + "integrity": "sha512-BI6/H7q3aP0I7S7GOrjyxTjgEJlSnovXE38+bdxBpuKN6z+d//uF+T+VQ3Q7ltJL/71p17ufartARX9Ja5gOGQ==", "cpu": [ "x64" ], @@ -1691,9 +1761,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.61.1.tgz", - "integrity": "sha512-Q8CBCCQtDFrYtXoeUXSrnFXKOnyUhx6bz+SkL6A0E7V8kAiCJ5pamq1WtbfpVGhR5TSpXY6ak3avmDc5fHTyJA==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.65.0.tgz", + "integrity": "sha512-W1vUprf09RWaVWnsFP1vlUkEWJzTZlpObOEAYZXt9Fq0UVAOYEkeGr7wBX7McKqqIQskXdBnpiOMgwPujordgA==", "cpu": [ "arm" ], @@ -1705,9 +1775,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.61.1.tgz", - "integrity": "sha512-nwnhk1581l0FBVellGcVCAT0Oi06onEA3WB53sf01VO3I0UPBkMH9sXONYME2K0ovXcNayJfNtHfm6mpJElatQ==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.65.0.tgz", + "integrity": "sha512-s8QTcZWgrl9haFzEGIqyE5BWyo89pFDGLMBFZ752WYxk8DJwNU/O1X6pZgPw829d9/sm6CCHyrMP3aurt76p1Q==", "cpu": [ "arm" ], @@ -1719,9 +1789,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.61.1.tgz", - "integrity": "sha512-x5Xr49hwt3hdW75UOZm3395YwwzPyauktslv29KpWL/T+vVAzoT3azLcTWv0eMciBNrx+DYjH4paehHoLpPvpg==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.65.0.tgz", + "integrity": "sha512-ke1f6dLRzkqveyjjF2fkEwQYZvxHtNNwjegY8nJrwcO0Bdqr8CzFO/pKE0Bns13cx0qz2Ba2Y0Hs3dSwMdnHxA==", "cpu": [ "arm64" ], @@ -1733,9 +1803,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.61.1.tgz", - "integrity": "sha512-unMS3H73DpaoPyyEVPjGKleM/s0mkmsauTENpw4INQY8y4+IuLNjkueQ5QCtC0D3N38Y38yhAU8OoZ20S2Tm6w==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.65.0.tgz", + "integrity": "sha512-926SMeUcy4y18Rz/w2aJiUKOnyAnm6czg72bXkQEaeemsll+Wr0hnsjb2BGRpHvWgwAMYy5ACJCotbvfLCfj0A==", "cpu": [ "arm64" ], @@ -1747,9 +1817,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.61.1.tgz", - "integrity": "sha512-zNZzGRnAhwjFEYmvphJRV5XaQGjs62cCmeYYHUT//NbvEnHauw+I85nGG+SiVg5ld4GX8D1IbKIX+ozITQnhMQ==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.65.0.tgz", + "integrity": "sha512-6T7JNRP1hc4hqF2dUsEoVLOt9K8tmODoCLldtQRYnrddGGQY8Gqe2pM/qMMUo7EMowpP7oa2N95k0/8sYK/ipw==", "cpu": [ "loong64" ], @@ -1761,9 +1831,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.61.1.tgz", - "integrity": "sha512-LdpWGL8X209B2SIvWjqlc8VZgM6PKfontSerGepuldQmHYrAOtnMCXeJkxXGbC+PPZVOuu5czJo7fNV6aeW8rQ==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.65.0.tgz", + "integrity": "sha512-SImGFl1Je5kpyAgOCPONVT7h6ASV8mAUwGRjY7eZvVjPg//PfHOXgI+P241RF/+HqsA4PP3qD527ysWFKNQyhQ==", "cpu": [ "loong64" ], @@ -1775,9 +1845,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.61.1.tgz", - "integrity": "sha512-EC5kTtNaNGOmbMGqar8dvJy6y/hg99GAwjfBz++pxZhQATXGcRjd6c5en5wcbru0vkRmiMGsQKdMJOOf6sza4g==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.65.0.tgz", + "integrity": "sha512-XeDTbmPF1Yu5asfXGPrMkWoxTDhgryQbmw5Q1+R582O51VNCk23J6f2pDrsAp5YkneBVBwtExx6ZGOb9D2aQ6A==", "cpu": [ "ppc64" ], @@ -1789,9 +1859,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.61.1.tgz", - "integrity": "sha512-8hiwp6D4acEcNK78I4rP0/XtS1sknWIAMJBPdR4l6zUtyTm5KiTDr5bXmWt4foY7nAN7AThDHgkLIEZOWKbzWw==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.65.0.tgz", + "integrity": "sha512-VS55JUI/1nsljmV/jfqNkLZXFw8uMO8nNlfoHmSevNf6fO3neuhyDvx9dv3c/Ytt8r/431SL8Qax1dpYvOMZTg==", "cpu": [ "ppc64" ], @@ -1803,9 +1873,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.61.1.tgz", - "integrity": "sha512-10dh/h/BqA7DuMPWSxkR8uks18FRwnwOEqr5zOTEl+NOwP/OMzKX8OFR/Of9xxDA7D5qef1Nzar5WDD2kCCr1g==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.65.0.tgz", + "integrity": "sha512-Vblw84TbX7RS4la1Y4+yQ7aore/oSyaNtFbppuBr5Vs/4LfBeXKq9dIfoExw6zOvRERqd2rRAjnZRaMhH/0x5w==", "cpu": [ "riscv64" ], @@ -1817,9 +1887,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.61.1.tgz", - "integrity": "sha512-YKJ5lg35DP17gcAOggnihe+APw9HLyj1Xn7gsmGumBJAUDa6NGXNixJzmkWLhcK9TOuuyQjdamzvJefkO7qHZQ==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.65.0.tgz", + "integrity": "sha512-7+gHjtONvKgwR9InTKFaLq53f6YzBJkgeMRBENdWTsQr+spahGqQm8HF5aXpq8i4JaRrOqYyv6Zn1WltDTxaZQ==", "cpu": [ "riscv64" ], @@ -1831,9 +1901,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.61.1.tgz", - "integrity": "sha512-Mlil5G2Jj6a7B3LWGctg+XPL9vdXYuzCtNXfxOQ0nPjc2m6ueUktocPGH9bnAM0bNRKb/bAWTujUU7IJQdQA+g==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.65.0.tgz", + "integrity": "sha512-KvNDC0J6s4vVHhtJ6KrDXU0Er0au/hmRIBq/+1maCV8TseGupeKizq0bWcrbp2HE1T8xoknvN0Q/KZ/YF0qX3w==", "cpu": [ "s390x" ], @@ -1845,9 +1915,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.61.1.tgz", - "integrity": "sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.65.0.tgz", + "integrity": "sha512-GExdD15WPvu/x/drELjVam7vX8EsPgvTMOa/iJL/p/4m/oOqzbb7JXZg8fXR4hlXtg/sF2zyTZ3bR0AEtEMlhQ==", "cpu": [ "x64" ], @@ -1859,9 +1929,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.61.1.tgz", - "integrity": "sha512-qy5pBvZbqNFheBz61R1rzsezjm0J7O2oNGoWtGoY89SZYLUfxAJTBAqDChqAIdB4rCiIbi9nF7yZ83GnNiLwSw==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.65.0.tgz", + "integrity": "sha512-8sT9PemIZfIMED4Vd4KGoOXVDj5CMSWNcGdbheRUx9TYS03yOWdT2Q0lXPyEyNBB9YTilwewIQKNIBk6Nxi0Kg==", "cpu": [ "x64" ], @@ -1873,9 +1943,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.61.1.tgz", - "integrity": "sha512-E83TXjI4zm0+5f2qO+UOudaCYIhYwpJ5jq6YCZNIZ+6CbfhKrkAGezeiASBL9ElxAxFsRS9ZhESv8mfnj6TKeg==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.65.0.tgz", + "integrity": "sha512-pO6Ehi0jo5yE0R6PltKhJhv9mlIiyzBJk5N5NUF2OF6xtVKI+1bdXxj/rb0jGXy3hck1ELVT0QPY3tzkAm360w==", "cpu": [ "x64" ], @@ -1887,9 +1957,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.61.1.tgz", - "integrity": "sha512-fbWnKqVkjrJN38vNe3ahkbk6iejS/3b0Nt7EEtPpE6RBacZcGXNKbzfHN3GUUlXOPghUg0j6XUGrtjX9z1sIvA==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.65.0.tgz", + "integrity": "sha512-vo7N3/+cjjPDYr8vtxC+qSNgWa9sDvJ7g8N8R5SWqFY4WiNH1ULcAU70SKVyHeiIZOYYwNP9pTipmhN5sl1NPw==", "cpu": [ "arm64" ], @@ -1901,9 +1971,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.61.1.tgz", - "integrity": "sha512-ArMl38iVAbk0New1ogihQNY6iphLi4ZaRsa037gUzv5yeKPY8TD3Dmy4x2RNC1VztU/uqm+G+/RwFrSka3Oy2g==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.65.0.tgz", + "integrity": "sha512-ArwvgFAbjKcDM7qqotZ4OVYf+UMT9xH2YzkCzK4+AuZSDihMlz1Ekoe4INwBVXzn2mnJzuIYOcSx07iTBijGRQ==", "cpu": [ "arm64" ], @@ -1915,9 +1985,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.61.1.tgz", - "integrity": "sha512-0mYtjHS9ucAbcATycCNK9IGBk/cCe/ma7EmSLGZdsxnOA8cjRIyU04wDpVAD9NiOfLUR9KTxdiO53uOkherqjQ==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.65.0.tgz", + "integrity": "sha512-QGMmK4/cxKE/36FoLMSHQBCyymv/eFTnsCvvsBF0rgmOvVbvX78VWZRerL3dHa77f4pM6Xcc2iGDhJ10w/svKQ==", "cpu": [ "ia32" ], @@ -1929,7 +1999,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.61.1", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.65.0.tgz", + "integrity": "sha512-XfKYFWHIPs4HPODIMsGF1IKlS3H1e3WokUZIgpmn4+uNnZBlnRDDHEylNyazbQXwhMKZre68OjtRYbKqb5+j8w==", "cpu": [ "x64" ], @@ -1941,7 +2013,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.61.1", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.65.0.tgz", + "integrity": "sha512-wPWi++K4Bs1VR4XihOhfGi4IGX6Cub7FlerTf8X2v+2BtDHddgSqWCXwGD+h2yAe4/niIhNDwAltioOC+wEogQ==", "cpu": [ "x64" ], @@ -1952,13 +2026,6 @@ "win32" ] }, - "node_modules/@standard-schema/spec": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", - "dev": true, - "license": "MIT" - }, "node_modules/@ster5/global-mutex": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/@ster5/global-mutex/-/global-mutex-3.3.0.tgz", @@ -2014,9 +2081,9 @@ } }, "node_modules/@turbo/darwin-64": { - "version": "2.10.4", - "resolved": "https://registry.npmjs.org/@turbo/darwin-64/-/darwin-64-2.10.4.tgz", - "integrity": "sha512-m1MUEI4MJ69r5CwfMYxmHi0H0rrgiYCBOp0tgBZ9x/YVvOb5uu/lRIDyDwdtH054R2yWeQaIigUGu6aCX9f8cA==", + "version": "2.11.10", + "resolved": "https://registry.npmjs.org/@turbo/darwin-64/-/darwin-64-2.11.10.tgz", + "integrity": "sha512-By4idRap5+nLnMuRzLB4qkOPRlvNdyY1ne4VJYDyUoUB11H94k7uif9mbe3JT8JSNXs1D68uMcBj6hJ/jMQRvA==", "cpu": [ "x64" ], @@ -2028,9 +2095,9 @@ ] }, "node_modules/@turbo/darwin-arm64": { - "version": "2.10.4", - "resolved": "https://registry.npmjs.org/@turbo/darwin-arm64/-/darwin-arm64-2.10.4.tgz", - "integrity": "sha512-VQ1Yxs5zkPT+2z7t1P4mvn6JmcKLkOCAsPuK9XbOvuVj0DlTlETfIXNisX0771v/vTWHOQqiwoGi+TtAUq8efw==", + "version": "2.11.10", + "resolved": "https://registry.npmjs.org/@turbo/darwin-arm64/-/darwin-arm64-2.11.10.tgz", + "integrity": "sha512-pyEYlVcuexOPa92p0Wlwl9YT1Is5D60lxN3ItWm3g30YLvFaUq86TF4BBWg5ZAc0uMTnrOzCvuCsOBTdzUWnRQ==", "cpu": [ "arm64" ], @@ -2042,9 +2109,9 @@ ] }, "node_modules/@turbo/linux-64": { - "version": "2.10.4", - "resolved": "https://registry.npmjs.org/@turbo/linux-64/-/linux-64-2.10.4.tgz", - "integrity": "sha512-IzV1QovmwX7mfGnVinmE++2IB8tbeo38weltiuH5zNqwCTBjLs/DytyRKx+bmnhHdXIq9SheR8p0Nip/LBUPHg==", + "version": "2.11.10", + "resolved": "https://registry.npmjs.org/@turbo/linux-64/-/linux-64-2.11.10.tgz", + "integrity": "sha512-1tYeR/IDZ5HEdsb0jNq2L2xam5nMQ+g80tlV2BZmv4OFw+pMcUM0mMmUcfc5wXPPNHVNPuDMjh9Y8G8HgXPLZA==", "cpu": [ "x64" ], @@ -2052,13 +2119,14 @@ "license": "MIT", "optional": true, "os": [ + "android", "linux" ] }, "node_modules/@turbo/linux-arm64": { - "version": "2.10.4", - "resolved": "https://registry.npmjs.org/@turbo/linux-arm64/-/linux-arm64-2.10.4.tgz", - "integrity": "sha512-rfujSQkP5aYiRn0PgTM7F00WkJCP/bKDVZbOx3WmrZwa/vHA0bplhCl328kpX7VI9HH2vI90ISGwuSVgJgoqTw==", + "version": "2.11.10", + "resolved": "https://registry.npmjs.org/@turbo/linux-arm64/-/linux-arm64-2.11.10.tgz", + "integrity": "sha512-HuekQxvVGhUd46g1Im/DKdOtglHr4/gguZAvzEpPUgtxNkztSa8lWhQEGQ+EmPQ0n7w19qjThFU+OfEEd0uvlw==", "cpu": [ "arm64" ], @@ -2066,13 +2134,14 @@ "license": "MIT", "optional": true, "os": [ + "android", "linux" ] }, "node_modules/@turbo/windows-64": { - "version": "2.10.4", - "resolved": "https://registry.npmjs.org/@turbo/windows-64/-/windows-64-2.10.4.tgz", - "integrity": "sha512-NnspP7Wd5fa3Wwnqv9bKfhegqZzuHBgbPxdZU/idTLQcazx/vgKu95JlCx2YHY0hdvKCnPcARrDwM+KEUmaO7A==", + "version": "2.11.10", + "resolved": "https://registry.npmjs.org/@turbo/windows-64/-/windows-64-2.11.10.tgz", + "integrity": "sha512-UJOP3BkbreY3/JlMgJR6ZiimxYIBn+c+B4tnBIxD0E9c3Estmk+XoVNVBNBottZLNRXe3/ScgOU4+/k8tIWysg==", "cpu": [ "x64" ], @@ -2084,9 +2153,9 @@ ] }, "node_modules/@turbo/windows-arm64": { - "version": "2.10.4", - "resolved": "https://registry.npmjs.org/@turbo/windows-arm64/-/windows-arm64-2.10.4.tgz", - "integrity": "sha512-Iv02YgOpaEShc2OkG7mgCJ2pEw1RUKiKbs0h8W5wAf4jZ5vpmraTEjuGTgHRuOORQnC1GN3KHo5WB+hu1abRMA==", + "version": "2.11.10", + "resolved": "https://registry.npmjs.org/@turbo/windows-arm64/-/windows-arm64-2.11.10.tgz", + "integrity": "sha512-xOkEjF3ws/b/YNlc+bvJHMYBn+vL+QbEISZFVi0qS+ImmhA1X3/gmNmBrjjIG3dg6aeN+n6gQitzSkXQ286qJQ==", "cpu": [ "arm64" ], @@ -2097,17 +2166,6 @@ "win32" ] }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", - "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@types/chai": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", @@ -2158,44 +2216,42 @@ } }, "node_modules/@types/node": { - "version": "26.1.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.1.tgz", - "integrity": "sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==", + "version": "26.6.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.5.tgz", + "integrity": "sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==", "license": "MIT", "dependencies": { - "undici-types": "~8.3.0" + "undici-types": "~8.9.0" } }, "node_modules/@types/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-1mAINjtQCXXeLkJ9ehXkwOcBpqtLxiVtKhpUf83DdRNdQKV0iXZpaHYqRr7nj+wvxuJzoAmAwXI+sCNMv1CzLQ==", "license": "MIT" }, "node_modules/@vitest/coverage-v8": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.10.tgz", - "integrity": "sha512-IM49HmthevbgAO4anp1hwtoT9wYe59w0LR00gr+eagHE+ZJ5lK4sLPeO0ubgoJcwLk6dehU3R24N+FbEEKDc8g==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-5.0.5.tgz", + "integrity": "sha512-4KpkGdIrSqBihx/JyP/e+S+IKB98etg1XDQiLAxksLfcShnwi1VReGeOT9NI43hLHbknosKp/1CCLn9Zgcs8mg==", "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^1.0.2", - "@vitest/utils": "4.1.10", - "ast-v8-to-istanbul": "^1.0.0", - "istanbul-lib-coverage": "^3.2.2", - "istanbul-lib-report": "^3.0.1", - "istanbul-reports": "^3.2.0", - "magicast": "^0.5.2", - "obug": "^2.1.1", - "std-env": "^4.0.0-rc.1", - "tinyrainbow": "^3.1.0" + "@vitest/istanbul-lib-coverage": "^1.0.2", + "@vitest/istanbul-lib-report": "^1.0.2", + "ast-v8-to-istanbul": "^1.0.7", + "magicast": "^0.5.5", + "obug": "^3.0.0", + "std-env": "^4.3.0", + "tinyrainbow": "^3.2.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "4.1.10", - "vitest": "4.1.10" + "@vitest/browser": "5.0.5", + "vitest": "5.0.5" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -2203,40 +2259,46 @@ } } }, - "node_modules/@vitest/expect": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.10.tgz", - "integrity": "sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==", + "node_modules/@vitest/istanbul-lib-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@vitest/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.2.tgz", + "integrity": "sha512-9J/JMwOf9AoJhAywhrn7ScKTL38hsWQP/qPG60OtaAFcQ5OXPwKsxZFlbnuCKmZ61m8/lGgHYnFpdyQZUvG/iA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=22" + } + }, + "node_modules/@vitest/istanbul-lib-report": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@vitest/istanbul-lib-report/-/istanbul-lib-report-1.0.2.tgz", + "integrity": "sha512-gUsfXZJbzPamoIY5TvHFiMMoXESBrUMo+xqaj+rYrWI69+EnvRlYBlP96ZnHPY4vX8kyUpgAnFUCg5wZG/HkDQ==", "dev": true, "license": "MIT", "dependencies": { - "@standard-schema/spec": "^1.1.0", - "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.10", - "@vitest/utils": "4.1.10", - "chai": "^6.2.2", - "tinyrainbow": "^3.1.0" + "@vitest/istanbul-lib-coverage": "1.0.2" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=22" } }, "node_modules/@vitest/mocker": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.10.tgz", - "integrity": "sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-5.0.5.tgz", + "integrity": "sha512-xLL3lkDegJZw+MGoGaCCsFayDZthGgpAtr3Vziyfc4p7xH89K7KRPcRBBh/kEYm0Aqkt5DtTmkYpBtRV/FrHZg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.1.10", + "@jridgewell/trace-mapping": "0.3.31", + "@vitest/spy": "5.0.5", "estree-walker": "^3.0.3", - "magic-string": "^0.30.21" + "magic-string": "^1.4.3" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "msw": "^2.4.9", + "msw": "^2.4.9 || ^3.0.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { @@ -2248,90 +2310,43 @@ } } }, - "node_modules/@vitest/pretty-format": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.10.tgz", - "integrity": "sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==", + "node_modules/@vitest/mocker/node_modules/magic-string": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.4.3.tgz", + "integrity": "sha512-z12OxmaPGE0F4xlpGdjuAUckipLpQlTAuAmyGhNoD7ODpYUzvDfvtxUbjM/jwznyP178oju/KDdyi220wNJ0RQ==", "dev": true, "license": "MIT", "dependencies": { - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "@jridgewell/sourcemap-codec": "^1.6.0" } }, - "node_modules/@vitest/runner": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.10.tgz", - "integrity": "sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==", + "node_modules/@vitest/spy": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-5.0.5.tgz", + "integrity": "sha512-lwJRExuH417257Q5wv9QYugN9IMJkoxcrKrYxGPQkBzl7wlNpTUxD/5yNX4ESKVUIShKPgkGchYPFMWOOk0wzw==", "dev": true, "license": "MIT", - "dependencies": { - "@vitest/utils": "4.1.10", - "pathe": "^2.0.3" - }, "funding": { "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/snapshot": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.10.tgz", - "integrity": "sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "4.1.10", - "@vitest/utils": "4.1.10", - "magic-string": "^0.30.21", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/spy": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.10.tgz", - "integrity": "sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.10.tgz", - "integrity": "sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "4.1.10", - "convert-source-map": "^2.0.0", - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } + "node_modules/abstract-logging": { + "version": "2.0.1", + "license": "MIT" }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "license": "MIT", "dependencies": { - "event-target-shim": "^5.0.0" + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" }, "engines": { - "node": ">=6.5" + "node": ">= 0.6" } }, - "node_modules/abstract-logging": { - "version": "2.0.1", - "license": "MIT" - }, "node_modules/acorn": { "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", @@ -2374,37 +2389,10 @@ } } }, - "node_modules/ansi-escapes": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", - "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "environment": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "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==", "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -2424,10 +2412,20 @@ "license": "MIT" }, "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==", - "license": "Python-2.0" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-3.0.4.tgz", + "integrity": "sha512-fwWK3Zq22l4XJJjx5mcBHGikIk+hJqO+32dPm0Jur7+rtG5x1scOjSfdT9ZKeWHPpsya/l0HHK4tDImBkTrtvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "PSF-2.0" }, "node_modules/array-back": { "version": "6.2.3", @@ -2454,13 +2452,13 @@ } }, "node_modules/asn1js": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.10.tgz", - "integrity": "sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.1.0.tgz", + "integrity": "sha512-HWYi1THkOqguCiO+vwj09ZkQFD2kKEsejYHAYCtX0D80WVdoDnvRc9IukXX/jeb0T9NRWJnRtqwdbHltnFjwXA==", "license": "BSD-3-Clause", "dependencies": { "pvtsutils": "^1.3.6", - "pvutils": "^1.1.5", + "pvutils": "^1.2.0", "tslib": "^2.8.1" }, "engines": { @@ -2487,9 +2485,9 @@ } }, "node_modules/ast-v8-to-istanbul": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.4.tgz", - "integrity": "sha512-0bC0/4bTSrnwdhU3IsZDwEdojvuPrSg59OYZfKsLRtJZ0u8VBx9DebfqqG8bRdCC0I7vjgxmPi41P0lpkhJHtA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.7.tgz", + "integrity": "sha512-kFL68AG6ajd8fg248zwM9GQrUWEp79gsmjum34OEXjs4yHuUMZfYKwOLW9GMmB4oNvVrj+EAGxsP7ye2UR9UlA==", "dev": true, "license": "MIT", "dependencies": { @@ -2544,26 +2542,6 @@ "node": "18 || 20 || >=22" } }, - "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==", - "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" - }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -2573,47 +2551,54 @@ "tweetnacl": "^0.14.3" } }, - "node_modules/brace-expansion": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", - "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "node_modules/body-parser": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.4.0.tgz", + "integrity": "sha512-Ifk1KcLrxaGt1occQagQNFNNOqRt1LFuehEnHHzB8Z6cRgIxRU1TBaiIsUiCdA+gy5PL7Y1IX31DNKkRmxtXjQ==", "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" + "bytes": "^3.1.2", + "content-type": "^2.1.0", + "debug": "^4.4.3", + "http-errors": "^2.0.1", + "iconv-lite": "^0.7.3", + "on-finished": "^2.4.1", + "qs": "^6.16.1", + "raw-body": "^3.0.2", + "type-is": "^2.1.0" }, "engines": { - "node": "18 || 20 || >=22" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/body-parser/node_modules/content-type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT" + "node_modules/brace-expansion": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } }, "node_modules/bundle-require": { "version": "5.1.0", @@ -2640,27 +2625,58 @@ "node": ">=0.10.0" } }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/cac": { - "version": "6.7.14", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cac/-/cac-7.1.0.tgz", + "integrity": "sha512-LMDU/U2yA4IPIY8KT0NsNPWEYZvAMkbgyspxJ6btJaYV+WMDOHAZCmB0lsTObiHaRS1V/ztKAl7+TSkTqXyeoA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=20.19.0" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "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==", "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, "engines": { - "node": ">=6" + "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==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/chai": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", - "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.3.0.tgz", + "integrity": "sha512-XWAtwJ6OHO+tj0EKCs0Y2UamnyOxseZWltU4x2U2wh8g4AigdjwvtUjvLP2tqkA/avxHEtzxNaqGq/YGNwckKg==", "dev": true, "license": "MIT", "engines": { @@ -2668,14 +2684,12 @@ } }, "node_modules/chalk": { - "version": "4.1.2", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-6.0.1.tgz", + "integrity": "sha512-/Ce6KNm3vIbWdMlNna6RVIZ/ICQxnJxCicet5LBKK9ZffBkqzDw0xh9EiKSljdRtiIQ1S1z4YgcscUUGzNCWrA==", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">=22" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" @@ -2696,54 +2710,41 @@ "url": "https://github.com/chalk/chalk-template?sponsor=1" } }, - "node_modules/chokidar": { - "version": "4.0.3", - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "dev": true, + "node_modules/chalk-template/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", "dependencies": { - "restore-cursor": "^5.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/cli-truncate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz", - "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==", - "dev": true, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "license": "MIT", "dependencies": { - "slice-ansi": "^8.0.0", - "string-width": "^8.2.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">=20" + "node": ">= 14.16.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://paulmillr.com/funding/" } }, "node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -2754,6 +2755,8 @@ }, "node_modules/color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, "node_modules/command-line-args": { @@ -2822,24 +2825,26 @@ } }, "node_modules/content-disposition": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", - "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-3.0.0.tgz", + "integrity": "sha512-ZH/0Xs9rMIFWCOmGdmS9eHBTF62qqQYNz4nVjQhkdIO/a0fCP4UIM3mRz/wiqL0L14YgAz/1xio4OaSY4+ON/A==", "license": "MIT", "engines": { - "node": ">=18" + "node": ">=22" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/express" } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, "node_modules/cookie": { "version": "1.1.1", @@ -2852,36 +2857,60 @@ "url": "https://opencollective.com/express" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } }, "node_modules/cosmiconfig": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.2.tgz", - "integrity": "sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-10.0.1.tgz", + "integrity": "sha512-/zvGoYn0y27QTBmK+0B+oPdEPC4fKGUmJsMTQbDjqph00TrkqfVFW/M+C6ya54sYCgHC6QCwK/mI6djt8cEGHQ==", "license": "MIT", "dependencies": { "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" + "js-yaml": "^5.4.1" }, "engines": { - "node": ">=14" + "node": "^22.18 || >= 24" }, "funding": { "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": ">= 8" } }, "node_modules/dashdash": { @@ -2941,6 +2970,7 @@ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "dev": true, "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=8" } @@ -2963,46 +2993,18 @@ "node": ">=6" } }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/duplexify/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/duplexify/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/duplexify/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "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==", "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/ecc-jsbn": { @@ -3015,20 +3017,19 @@ "safer-buffer": "^2.1.0" } }, - "node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "license": "MIT" }, - "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==", + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "license": "MIT", - "dependencies": { - "once": "^1.4.0" + "engines": { + "node": ">= 0.8" } }, "node_modules/env-paths": { @@ -3038,37 +3039,47 @@ "node": ">=6" } }, - "node_modules/environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", - "dev": true, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4" } }, - "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" + "engines": { + "node": ">= 0.4" } }, "node_modules/es-module-lexer": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz", - "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz", + "integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==", "dev": true, "license": "MIT" }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/esbuild": { - "version": "0.27.7", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz", + "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -3079,32 +3090,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.7", - "@esbuild/android-arm": "0.27.7", - "@esbuild/android-arm64": "0.27.7", - "@esbuild/android-x64": "0.27.7", - "@esbuild/darwin-arm64": "0.27.7", - "@esbuild/darwin-x64": "0.27.7", - "@esbuild/freebsd-arm64": "0.27.7", - "@esbuild/freebsd-x64": "0.27.7", - "@esbuild/linux-arm": "0.27.7", - "@esbuild/linux-arm64": "0.27.7", - "@esbuild/linux-ia32": "0.27.7", - "@esbuild/linux-loong64": "0.27.7", - "@esbuild/linux-mips64el": "0.27.7", - "@esbuild/linux-ppc64": "0.27.7", - "@esbuild/linux-riscv64": "0.27.7", - "@esbuild/linux-s390x": "0.27.7", - "@esbuild/linux-x64": "0.27.7", - "@esbuild/netbsd-arm64": "0.27.7", - "@esbuild/netbsd-x64": "0.27.7", - "@esbuild/openbsd-arm64": "0.27.7", - "@esbuild/openbsd-x64": "0.27.7", - "@esbuild/openharmony-arm64": "0.27.7", - "@esbuild/sunos-x64": "0.27.7", - "@esbuild/win32-arm64": "0.27.7", - "@esbuild/win32-ia32": "0.27.7", - "@esbuild/win32-x64": "0.27.7" + "@esbuild/aix-ppc64": "0.28.2", + "@esbuild/android-arm": "0.28.2", + "@esbuild/android-arm64": "0.28.2", + "@esbuild/android-x64": "0.28.2", + "@esbuild/darwin-arm64": "0.28.2", + "@esbuild/darwin-x64": "0.28.2", + "@esbuild/freebsd-arm64": "0.28.2", + "@esbuild/freebsd-x64": "0.28.2", + "@esbuild/linux-arm": "0.28.2", + "@esbuild/linux-arm64": "0.28.2", + "@esbuild/linux-ia32": "0.28.2", + "@esbuild/linux-loong64": "0.28.2", + "@esbuild/linux-mips64el": "0.28.2", + "@esbuild/linux-ppc64": "0.28.2", + "@esbuild/linux-riscv64": "0.28.2", + "@esbuild/linux-s390x": "0.28.2", + "@esbuild/linux-x64": "0.28.2", + "@esbuild/netbsd-arm64": "0.28.2", + "@esbuild/netbsd-x64": "0.28.2", + "@esbuild/openbsd-arm64": "0.28.2", + "@esbuild/openbsd-x64": "0.28.2", + "@esbuild/openharmony-arm64": "0.28.2", + "@esbuild/sunos-x64": "0.28.2", + "@esbuild/win32-arm64": "0.28.2", + "@esbuild/win32-ia32": "0.28.2", + "@esbuild/win32-x64": "0.28.2" } }, "node_modules/escape-html": { @@ -3123,29 +3134,34 @@ "@types/estree": "^1.0.0" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 0.6" } }, - "node_modules/eventemitter3": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", - "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "license": "MIT", + "dependencies": { + "eventsource-parser": "^3.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.1.tgz", + "integrity": "sha512-EKN1vKAMcZ8MlYMpaNuxN6R9yakzH6uajHcHVTqWJzvu5pWw9DyhbP35HH8MVBQ+dZjAfDxk+A8NiR9KWaXiyQ==", "license": "MIT", "engines": { - "node": ">=0.8.x" + "node": ">=18.0.0" } }, "node_modules/expect-type": { @@ -3158,6 +3174,103 @@ "node": ">=12.0.0" } }, + "node_modules/express": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.3.0.tgz", + "integrity": "sha512-qCqy1xSoaugxOD4IVHb1ZWdkvCF2W3aE2okKouWj8VwJ+ztskSiXoBnCSJqfKT+cVPJhuJqe9YLbY425+Zh00g==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.3.0", + "content-disposition": "^2.0.1", + "content-type": "^2.0.0", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.8", + "qs": "^6.16.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.1.0", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-rate-limit": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.7.1.tgz", + "integrity": "sha512-2FXbqkygil3mZiXzEtM0IjE/UBmBNot0J1GEVrJT4JbrvwOSoEtqtO+wHbiMQELWe1eNvHoYRg2dkjOid+6JkA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "ip-address": "^10.2.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" + } + }, + "node_modules/express/node_modules/content-disposition": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-2.0.1.tgz", + "integrity": "sha512-e+H0ZXHSWYrENhQzw1LPuP4oF5MzVKmDU6d3hxlvaPEYLLg62MxtQNPRx4SYSuYJSBUgnQIG4HIN2tEtNv7Dog==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/content-type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/fast-decode-uri-component": { "version": "1.0.1", "license": "MIT" @@ -3210,9 +3323,9 @@ "license": "BSD-3-Clause" }, "node_modules/fastify": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.10.0.tgz", - "integrity": "sha512-A9L0ziuWGQHgEEVgF3davQ9vbD93IuX+lo2IsxapQmu5b/Y/ynn9m9K5JHt9dvyJXOFc5iN0Zk5GHEOqnzhWjg==", + "version": "5.12.7", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.12.7.tgz", + "integrity": "sha512-v4pEPsTRPuqlDIYiQFB+BHjVN4SdHX9u0ABk0ZDUKbbdY1vsNryUd1j4Z+jQEZajvYIVk047Kimva9/AJ79GYw==", "funding": [ { "type": "github", @@ -3235,7 +3348,7 @@ "find-my-way": "^9.6.0", "light-my-request": "^6.0.0", "pino": "^9.14.0 || ^10.1.0", - "process-warning": "^5.0.0", + "process-warning": "^5.1.0", "rfdc": "^1.3.1", "secure-json-parse": "^4.0.0", "semver": "^7.6.0", @@ -3243,7 +3356,9 @@ } }, "node_modules/fastify-plugin": { - "version": "5.1.0", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-6.0.1.tgz", + "integrity": "sha512-4wW4RxSmvPXLrh5mgQEiu43qU3bw44N2ss4FTkTkQIbprUhE+/s43QX0j/ttcztdWK7PEkHqVthdc5GdEGDvjA==", "funding": [ { "type": "github", @@ -3319,6 +3434,27 @@ } } }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/find-my-way": { "version": "9.6.0", "license": "MIT", @@ -3360,6 +3496,24 @@ "rollup": "^4.34.8" } }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -3375,17 +3529,50 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/get-east-asian-width": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", - "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", - "dev": true, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "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", + "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": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "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==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/getpass": { @@ -3414,13 +3601,51 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hexy": { "version": "0.4.0", "license": "MIT", @@ -3431,12 +3656,14 @@ "node": ">=14.0.0" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" + "node_modules/hono": { + "version": "4.13.14", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.14.tgz", + "integrity": "sha512-yhRLQ21U6qa9Hsu2N7Qcbh8tE+WKEcoErjIo56LeSGiGXGp9sA7UpE86Ui9uexb61KakiGwuHMn2QdV7w6i6kQ==", + "license": "MIT", + "engines": { + "node": ">=16.9.0" + } }, "node_modules/http-errors": { "version": "2.0.1", @@ -3482,49 +3709,20 @@ "url": "https://github.com/sponsors/typicode" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "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" - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "node_modules/iconv-lite": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz", + "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==", "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=6" + "node": ">=0.10.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/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==", - "license": "MIT", - "engines": { - "node": ">=4" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/inherits": { @@ -3533,6 +3731,15 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, + "node_modules/ip-address": { + "version": "10.7.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.5.tgz", + "integrity": "sha512-t2v0rkILYv9WXmSL7TpAaU3HXgaFYOPUcH3QHgwQ++gpJuH3bqyMy4Fvt/DJCTKwzH3Cf+bAp5W/mFL39KPLzA==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/ipaddr.js": { "version": "2.4.0", "license": "MIT", @@ -3540,71 +3747,37 @@ "node": ">= 10" } }, - "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==", + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", "license": "MIT" }, - "node_modules/is-fullwidth-code-point": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", - "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", - "dev": true, + "node_modules/is-safe-filename": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-safe-filename/-/is-safe-filename-0.1.1.tgz", + "integrity": "sha512-4SrR7AdnY11LHfDKTZY1u6Ga3RuxZdl3YKWWShO5iyuG5h8QS4GD2tOb04peBJ5I7pXbR+CGBNEhTcwK+FzN3g==", "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.3.1" - }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" + "node_modules/jose": { + "version": "6.2.13", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.13.tgz", + "integrity": "sha512-7TIg10ZE1x82YediN+lcrPNvGMKge9yFHQD+Qho/b8y2adfugU3AsvvHfxV0fzyFllT6l9xCjf4RWY9g/Z9PJQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" } }, "node_modules/joycon": { @@ -3625,9 +3798,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", - "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.5.0.tgz", + "integrity": "sha512-paNr4LFIFPjeeSmwNYdrb8FafLLG/Cr2Af3GjbsHJ5CxIjH4r0c2emlmRdAtpPAieP1gRVzk6buBbVP5gBMGAg==", "funding": [ { "type": "github", @@ -3640,10 +3813,10 @@ ], "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "argparse": "^3.0.3" }, "bin": { - "js-yaml": "bin/js-yaml.js" + "js-yaml": "bin/js-yaml.mjs" } }, "node_modules/jsbn": { @@ -3652,12 +3825,6 @@ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "license": "MIT" }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "license": "MIT" - }, "node_modules/json-schema-ref-resolver": { "version": "3.0.0", "funding": [ @@ -3696,6 +3863,12 @@ "version": "1.0.0", "license": "MIT" }, + "node_modules/json-schema-typed": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", + "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", + "license": "BSD-2-Clause" + }, "node_modules/light-my-request": { "version": "6.6.0", "funding": [ @@ -3730,11 +3903,12 @@ "license": "MIT" }, "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", "dev": true, "license": "MPL-2.0", + "peer": true, "dependencies": { "detect-libc": "^2.0.3" }, @@ -3746,23 +3920,23 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" } }, "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", "cpu": [ "arm64" ], @@ -3772,6 +3946,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -3781,9 +3956,9 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", "cpu": [ "arm64" ], @@ -3793,6 +3968,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -3802,9 +3978,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", "cpu": [ "x64" ], @@ -3814,6 +3990,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -3823,9 +4000,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", "cpu": [ "x64" ], @@ -3835,6 +4012,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -3844,9 +4022,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", "cpu": [ "arm" ], @@ -3856,6 +4034,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -3865,9 +4044,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", "cpu": [ "arm64" ], @@ -3877,6 +4056,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -3886,9 +4066,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", "cpu": [ "arm64" ], @@ -3898,6 +4078,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -3907,9 +4088,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", "cpu": [ "x64" ], @@ -3919,6 +4100,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -3928,9 +4110,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", "cpu": [ "x64" ], @@ -3940,6 +4122,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -3949,9 +4132,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", "cpu": [ "arm64" ], @@ -3961,6 +4144,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -3970,9 +4154,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", "cpu": [ "x64" ], @@ -3982,6 +4166,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -4007,19 +4192,19 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, "license": "MIT" }, "node_modules/lint-staged": { - "version": "17.0.8", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-17.0.8.tgz", - "integrity": "sha512-B2P/d+jVW0UXOQ0MVMLrB/9ydA1P+zz6jYfdrbbEd9ur3S2rcbduFWKiUCC02Sm5hbC8nrm7y24WuYMG54HfxA==", + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-17.6.0.tgz", + "integrity": "sha512-nOhBfYkZEwkFtNzD5pK9s9LkcWoxJ+whLzEnhqi9nl7zTB5n7tg8+9iYgMGx2Wm3VlLu8cbNj0RACzY+nWi5iQ==", "dev": true, "license": "MIT", "dependencies": { - "listr2": "^10.2.1", - "picomatch": "^4.0.4", + "picomatch": "^4.0.7", "string-argv": "^0.3.2", - "tinyexec": "^1.2.4" + "tinyexec": "^1.3.1" }, "bin": { "lint-staged": "bin/lint-staged.js" @@ -4031,34 +4216,7 @@ "url": "https://opencollective.com/lint-staged" }, "optionalDependencies": { - "yaml": "^2.9.0" - } - }, - "node_modules/lint-staged/node_modules/tinyexec": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz", - "integrity": "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/listr2": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-10.2.1.tgz", - "integrity": "sha512-7I5knELsJKTUjXG+A6BkKAiGkW1i25fNa/xlUl9hFtk15WbE9jndA89xu5FzQKrY5llajE1hfZZFMILXkDHk/Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "cli-truncate": "^5.2.0", - "eventemitter3": "^5.0.4", - "log-update": "^6.1.0", - "rfdc": "^1.4.1", - "wrap-ansi": "^10.0.0" - }, - "engines": { - "node": ">=22.13.0" + "yaml": "^2.9.1" } }, "node_modules/load-tsconfig": { @@ -4089,136 +4247,64 @@ "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "license": "MIT" }, - "node_modules/log-update": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", - "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^7.0.0", - "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, + "node_modules/lru-cache": { + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "20 || >=22" } }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "node_modules/magic-string": { + "version": "0.30.21", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", - "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "node_modules/magicast": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.5.tgz", + "integrity": "sha512-UicdXN8zQ3JHlxVq+28afMXPr1z7WNY6+7EJnzTdQWkTAlMLF5fNCCKxJHBQwGaNGR11581EiQmQzx73+MvszA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", + "source-map-js": "^1.2.1" } }, - "node_modules/log-update/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, + "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==", "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4" } }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", - "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", - "dev": true, + "node_modules/media-typer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.1.tgz", + "integrity": "sha512-yz3xRaG20c6/BOzvYoDaGtPmGscs7YivItZEEqe6GbwNfHuxu9YNmvnEkMzKldAGY4/80pRcQRZSEnhquk9XuQ==", "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, "engines": { - "node": ">=18" + "node": ">= 0.8" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/long": { - "version": "5.3.2", - "license": "Apache-2.0" - }, - "node_modules/lru-cache": { - "version": "11.5.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", - "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/magic-string": { - "version": "0.30.21", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/magicast": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.3.tgz", - "integrity": "sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.29.3", - "@babel/types": "^7.29.0", - "source-map-js": "^1.2.1" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4245,26 +4331,29 @@ "node": ">= 0.6" } }, - "node_modules/mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", - "dev": true, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, "engines": { "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.5" + "brace-expansion": "^5.0.8" }, "engines": { "node": "18 || 20 || >=22" @@ -4325,7 +4414,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.12", + "version": "3.3.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz", + "integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==", "dev": true, "funding": [ { @@ -4334,6 +4425,7 @@ } ], "license": "MIT", + "peer": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -4341,1066 +4433,1401 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/negotiator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.1.0.tgz", + "integrity": "sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==", + "license": "MIT", + "dependencies": { + "content-type": "^2.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/negotiator/node_modules/content-type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/node-opcua": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua/-/node-opcua-2.175.1.tgz", - "integrity": "sha512-C8uVa3hzBhbu4l5SNYdpbG6ahoJmoUN/Ql+MWZI902KCSh60fsErg3KqOgWs30Lni3qU9441h/gmVnqtRTNgpQ==", - "license": "MIT", - "dependencies": { - "@types/semver": "7.7.1", - "chalk": "4.1.2", - "node-opcua-address-space": "2.175.1", - "node-opcua-address-space-for-conformance-testing": "2.175.1", - "node-opcua-aggregates": "2.175.1", - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-certificate-manager": "2.175.1", - "node-opcua-client": "2.175.1", - "node-opcua-client-proxy": "2.175.1", - "node-opcua-common": "2.175.1", - "node-opcua-constants": "2.175.1", - "node-opcua-crypto": "5.3.6", - "node-opcua-data-access": "2.175.1", - "node-opcua-data-model": "2.175.1", - "node-opcua-data-value": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-enum": "2.175.1", - "node-opcua-factory": "2.175.1", - "node-opcua-hostname": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-nodesets": "2.175.1", - "node-opcua-numeric-range": "2.175.1", - "node-opcua-packet-analyzer": "2.175.1", - "node-opcua-secure-channel": "2.175.1", - "node-opcua-server": "2.175.1", - "node-opcua-server-discovery": "2.175.1", - "node-opcua-service-browse": "2.175.1", - "node-opcua-service-call": "2.175.1", - "node-opcua-service-discovery": "2.175.1", - "node-opcua-service-endpoints": "2.175.1", - "node-opcua-service-filter": "2.175.1", - "node-opcua-service-history": "2.175.1", - "node-opcua-service-node-management": "2.175.1", - "node-opcua-service-query": "2.175.1", - "node-opcua-service-read": "2.175.1", - "node-opcua-service-register-node": "2.175.1", - "node-opcua-service-secure-channel": "2.175.1", - "node-opcua-service-session": "2.175.1", - "node-opcua-service-subscription": "2.175.1", - "node-opcua-service-translate-browse-path": "2.175.1", - "node-opcua-service-write": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-transport": "2.175.1", - "node-opcua-types": "2.175.1", - "node-opcua-utils": "2.175.1", - "node-opcua-variant": "2.175.1", - "node-opcua-vendor-diagnostic": "2.175.1", + "version": "2.187.16", + "resolved": "https://registry.npmjs.org/node-opcua/-/node-opcua-2.187.16.tgz", + "integrity": "sha512-ptMJ6YkeqSDYsB3hrNWoGIodp+yVGdm5ofi7UkDnnIhJfKr2KGoH1yOB9P9evRbBsPAQUong3iihGMvzwDzWDw==", + "license": "MIT", + "dependencies": { + "@types/semver": "7.8.0", + "chalk": "6.0.1", + "node-opcua-address-space": "2.187.16", + "node-opcua-address-space-for-conformance-testing": "2.187.16", + "node-opcua-aggregates": "2.187.16", + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-certificate-manager": "2.187.16", + "node-opcua-client": "2.187.16", + "node-opcua-client-proxy": "2.187.16", + "node-opcua-common": "2.187.9", + "node-opcua-constants": "2.185.0", + "node-opcua-crypto": "6.2.3", + "node-opcua-data-access": "2.187.9", + "node-opcua-data-model": "2.187.0", + "node-opcua-data-value": "2.187.9", + "node-opcua-debug": "2.186.7", + "node-opcua-enum": "2.187.0", + "node-opcua-factory": "2.187.0", + "node-opcua-hostname": "2.187.6", + "node-opcua-nodeid": "2.187.0", + "node-opcua-nodesets": "2.187.4", + "node-opcua-numeric-range": "2.187.0", + "node-opcua-packet-analyzer": "2.187.0", + "node-opcua-secure-channel": "2.187.16", + "node-opcua-server": "2.187.16", + "node-opcua-server-discovery": "2.187.16", + "node-opcua-service-browse": "2.187.9", + "node-opcua-service-call": "2.187.9", + "node-opcua-service-discovery": "2.187.9", + "node-opcua-service-endpoints": "2.187.9", + "node-opcua-service-filter": "2.187.14", + "node-opcua-service-history": "2.187.9", + "node-opcua-service-node-management": "2.187.9", + "node-opcua-service-query": "2.187.9", + "node-opcua-service-read": "2.187.9", + "node-opcua-service-register-node": "2.187.9", + "node-opcua-service-secure-channel": "2.187.9", + "node-opcua-service-session": "2.187.9", + "node-opcua-service-subscription": "2.187.16", + "node-opcua-service-translate-browse-path": "2.187.9", + "node-opcua-service-write": "2.187.9", + "node-opcua-status-code": "2.187.0", + "node-opcua-transport": "2.187.8", + "node-opcua-types": "2.187.9", + "node-opcua-utils": "2.187.0", + "node-opcua-variant": "2.187.0", + "node-opcua-vendor-diagnostic": "2.187.16", "semver": "^7.8.5" }, "engines": { - "node": ">=18" + "node": ">=22.13.0" }, "funding": { "url": "https://github.com/sponsors/erossignon" } }, "node_modules/node-opcua-address-space": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-address-space/-/node-opcua-address-space-2.175.1.tgz", - "integrity": "sha512-EtNR9H56OX5E85wFT7Du/aCXLYc8pjcY74IMSajINtQHw2YqxvVTtnxBYJyt9fE7uGj4DlP2q9aKEwwcFP4Y0w==", + "version": "2.187.16", + "resolved": "https://registry.npmjs.org/node-opcua-address-space/-/node-opcua-address-space-2.187.16.tgz", + "integrity": "sha512-qchXUW9C2IkuPi+7ujFcsFysTJTZPtCGO2HC5AZpdSUwlolea9OX4ddEXR6NreagMOQMfihvZbaFcaEd3nCfuQ==", "license": "MIT", "dependencies": { - "@types/semver": "7.7.1", - "chalk": "4.1.2", + "@types/semver": "7.8.0", + "chalk": "6.0.1", "dequeue": "^1.0.5", - "node-opcua-address-space-base": "2.175.1", - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-client-dynamic-extension-object": "2.175.1", - "node-opcua-constants": "2.175.1", - "node-opcua-crypto": "5.3.6", - "node-opcua-data-access": "2.175.1", - "node-opcua-data-model": "2.175.1", - "node-opcua-data-value": "2.175.1", - "node-opcua-date-time": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-enum": "2.175.1", - "node-opcua-extension-object": "2.175.1", - "node-opcua-factory": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-nodeset-ua": "2.175.1", - "node-opcua-numeric-range": "2.175.1", - "node-opcua-object-registry": "2.175.1", - "node-opcua-pseudo-session": "2.175.1", - "node-opcua-service-browse": "2.175.1", - "node-opcua-service-call": "2.175.1", - "node-opcua-service-history": "2.175.1", - "node-opcua-service-translate-browse-path": "2.175.1", - "node-opcua-service-write": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-types": "2.175.1", - "node-opcua-utils": "2.175.1", - "node-opcua-variant": "2.175.1", - "node-opcua-xml2json": "2.175.1", + "node-opcua-address-space-base": "2.187.14", + "node-opcua-address-space-store": "2.187.14", + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-client-dynamic-extension-object": "2.187.16", + "node-opcua-constants": "2.185.0", + "node-opcua-crypto": "6.2.3", + "node-opcua-data-access": "2.187.9", + "node-opcua-data-model": "2.187.0", + "node-opcua-data-value": "2.187.9", + "node-opcua-date-time": "2.187.0", + "node-opcua-debug": "2.186.7", + "node-opcua-enum": "2.187.0", + "node-opcua-extension-object": "2.187.0", + "node-opcua-factory": "2.187.0", + "node-opcua-nodeid": "2.187.0", + "node-opcua-nodeset-ua": "2.187.14", + "node-opcua-numeric-range": "2.187.0", + "node-opcua-object-registry": "2.186.7", + "node-opcua-pseudo-session": "2.187.16", + "node-opcua-service-browse": "2.187.9", + "node-opcua-service-call": "2.187.9", + "node-opcua-service-history": "2.187.9", + "node-opcua-service-translate-browse-path": "2.187.9", + "node-opcua-service-write": "2.187.9", + "node-opcua-status-code": "2.187.0", + "node-opcua-types": "2.187.9", + "node-opcua-utils": "2.187.0", + "node-opcua-variant": "2.187.0", + "node-opcua-xml2json": "2.187.0", "semver": "^7.8.5", "thenify-ex": "4.4.0", "xml-writer": "^1.7.0" }, + "bin": { + "opcua-nodeset-image": "bin/opcua-nodeset-image.cjs", + "opcua-nodeset-live": "bin/opcua-nodeset-live.cjs" + }, "engines": { - "node": ">=18" + "node": ">=22.13.0" } }, "node_modules/node-opcua-address-space-base": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-address-space-base/-/node-opcua-address-space-base-2.175.1.tgz", - "integrity": "sha512-3SCIBjJVQNpB9EqPfb+qo5U60aMAwbSrC2Tp0Kh+Qrgvm5kCWKdjvKnr8NHG7Y1fQiVXGDm3tib8BB5K83mGwQ==", - "license": "MIT", - "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-constants": "2.175.1", - "node-opcua-crypto": "5.3.6", - "node-opcua-data-model": "2.175.1", - "node-opcua-data-value": "2.175.1", - "node-opcua-date-time": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-extension-object": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-numeric-range": "2.175.1", - "node-opcua-schemas": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-types": "2.175.1", - "node-opcua-variant": "2.175.1" + "version": "2.187.14", + "resolved": "https://registry.npmjs.org/node-opcua-address-space-base/-/node-opcua-address-space-base-2.187.14.tgz", + "integrity": "sha512-MZCoB44ea8nx4kUHIOsPYCgEfUldMFvchArGp4Fnm1/1s3Ymd3Dh4qmGqudtlaDzsfW2WkOA3tkUBhWk3QQ2rg==", + "license": "MIT", + "dependencies": { + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-constants": "2.185.0", + "node-opcua-crypto": "6.2.3", + "node-opcua-data-model": "2.187.0", + "node-opcua-data-value": "2.187.9", + "node-opcua-date-time": "2.187.0", + "node-opcua-debug": "2.186.7", + "node-opcua-extension-object": "2.187.0", + "node-opcua-nodeid": "2.187.0", + "node-opcua-numeric-range": "2.187.0", + "node-opcua-schemas": "2.187.0", + "node-opcua-status-code": "2.187.0", + "node-opcua-types": "2.187.9", + "node-opcua-variant": "2.187.0" }, "engines": { - "node": ">=18" + "node": ">=22.13.0" } }, "node_modules/node-opcua-address-space-for-conformance-testing": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-address-space-for-conformance-testing/-/node-opcua-address-space-for-conformance-testing-2.175.1.tgz", - "integrity": "sha512-MQpt0L39jbCQgTRD5tpfBD2PneDz8RTzgg9DrojKLKO339cc29CsmZVQnmrDh4v26VfXjlWlL4BGOwDM95NZXQ==", + "version": "2.187.16", + "resolved": "https://registry.npmjs.org/node-opcua-address-space-for-conformance-testing/-/node-opcua-address-space-for-conformance-testing-2.187.16.tgz", + "integrity": "sha512-Xp85Pc7UWsUufrwp2Y7eO+x36KPehSiSaEduatpWLyRXTj0LY5OGu+CzBhxJQE5ZKZRFsyN/H3lIDVNK8Tv8rQ==", "license": "MIT", "dependencies": { - "node-opcua-address-space": "2.175.1", - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-data-access": "2.175.1", - "node-opcua-data-model": "2.175.1", - "node-opcua-data-value": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-factory": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-variant": "2.175.1" + "node-opcua-address-space": "2.187.16", + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-data-access": "2.187.9", + "node-opcua-data-model": "2.187.0", + "node-opcua-data-value": "2.187.9", + "node-opcua-debug": "2.186.7", + "node-opcua-factory": "2.187.0", + "node-opcua-nodeid": "2.187.0", + "node-opcua-status-code": "2.187.0", + "node-opcua-variant": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" + } + }, + "node_modules/node-opcua-address-space-store": { + "version": "2.187.14", + "resolved": "https://registry.npmjs.org/node-opcua-address-space-store/-/node-opcua-address-space-store-2.187.14.tgz", + "integrity": "sha512-seG9B9BoG4APh2QScSb1tCD9ctMz4HRv9z2qHr0Tm5nBMRuTBLeaAvss4Im+ZOOujUD6eHMb0IJe3zH9CG1uFw==", + "license": "MIT", + "dependencies": { + "node-opcua-address-space-base": "2.187.14", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-constants": "2.185.0", + "node-opcua-data-model": "2.187.0", + "node-opcua-data-value": "2.187.9", + "node-opcua-date-time": "2.187.0", + "node-opcua-nodeid": "2.187.0", + "node-opcua-numeric-range": "2.187.0", + "node-opcua-status-code": "2.187.0", + "node-opcua-types": "2.187.9", + "node-opcua-variant": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-aggregates": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-aggregates/-/node-opcua-aggregates-2.175.1.tgz", - "integrity": "sha512-438V0nqU2JJOrN8EVlzZQWQ55okDy3MlCRflfOHpQ8LWOKmrtjf1jdf4v6j0XC0UnomvxA997WghWpaJntMPFQ==", - "license": "MIT", - "dependencies": { - "node-opcua-address-space": "2.175.1", - "node-opcua-assert": "2.175.1", - "node-opcua-constants": "2.175.1", - "node-opcua-data-model": "2.175.1", - "node-opcua-data-value": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-numeric-range": "2.175.1", - "node-opcua-server": "2.175.1", - "node-opcua-service-history": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-types": "2.175.1", - "node-opcua-utils": "2.175.1", - "node-opcua-variant": "2.175.1" + "version": "2.187.16", + "resolved": "https://registry.npmjs.org/node-opcua-aggregates/-/node-opcua-aggregates-2.187.16.tgz", + "integrity": "sha512-YMWTRvi/sAagGTGuiFG/BmXjI2UrlW7Q/DFZw6JAJ15qGrnrxzQFExuheihSCqWEdm5lI4qbLPZngk6sfOfYCg==", + "license": "MIT", + "dependencies": { + "node-opcua-address-space": "2.187.16", + "node-opcua-assert": "2.186.7", + "node-opcua-constants": "2.185.0", + "node-opcua-data-model": "2.187.0", + "node-opcua-data-value": "2.187.9", + "node-opcua-nodeid": "2.187.0", + "node-opcua-numeric-range": "2.187.0", + "node-opcua-server": "2.187.16", + "node-opcua-service-history": "2.187.9", + "node-opcua-status-code": "2.187.0", + "node-opcua-types": "2.187.9", + "node-opcua-utils": "2.187.0", + "node-opcua-variant": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-alarm-condition": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-alarm-condition/-/node-opcua-alarm-condition-2.175.1.tgz", - "integrity": "sha512-UvP+3qQP3gosSfQpc1nNCU/9MFH9iKj095Yq4FBuzanNFsI+967DV+zaJ+eTV6M9j+l9F5h8PVc5eE2EaXr3aQ==", - "license": "MIT", - "dependencies": { - "chalk": "4.1.2", - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-constants": "2.175.1", - "node-opcua-data-model": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-pseudo-session": "2.175.1", - "node-opcua-service-filter": "2.175.1", - "node-opcua-service-read": "2.175.1", - "node-opcua-service-subscription": "2.175.1", - "node-opcua-service-translate-browse-path": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-types": "2.175.1", - "node-opcua-utils": "2.175.1", - "node-opcua-variant": "2.175.1" + "version": "2.187.16", + "resolved": "https://registry.npmjs.org/node-opcua-alarm-condition/-/node-opcua-alarm-condition-2.187.16.tgz", + "integrity": "sha512-MeMzFTNIQHAnjGNzuk6P60oNaTHeBr5CzZLsURF4MpGLhtzMWHNrR/tZU0cll3srWoLqWkK8eqNf1/8jHX0KlA==", + "license": "MIT", + "dependencies": { + "chalk": "6.0.1", + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-constants": "2.185.0", + "node-opcua-data-model": "2.187.0", + "node-opcua-debug": "2.186.7", + "node-opcua-nodeid": "2.187.0", + "node-opcua-pseudo-session": "2.187.16", + "node-opcua-service-filter": "2.187.14", + "node-opcua-service-read": "2.187.9", + "node-opcua-service-subscription": "2.187.16", + "node-opcua-service-translate-browse-path": "2.187.9", + "node-opcua-status-code": "2.187.0", + "node-opcua-types": "2.187.9", + "node-opcua-utils": "2.187.0", + "node-opcua-variant": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-assert": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-assert/-/node-opcua-assert-2.175.1.tgz", - "integrity": "sha512-xSHHApbeJW1IhRKDUwSac0S00zfOuWsiMpTfCXU5IZiE4bzWTOV82VFVv9jA+mt5nklb/t60+VxjhwJWxDO+hg==", + "version": "2.186.7", + "resolved": "https://registry.npmjs.org/node-opcua-assert/-/node-opcua-assert-2.186.7.tgz", + "integrity": "sha512-rBihYif7mYsC0xZ3dyQRswjEU5kuCd4RESFb1MKFo0LFFSUCZXp6Ob5bvwdEnBD41zdYA7ew3fCByqZsyz4wmg==", "license": "MIT", "dependencies": { - "chalk": "4.1.2" + "chalk": "6.0.1" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-basic-types": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-basic-types/-/node-opcua-basic-types-2.175.1.tgz", - "integrity": "sha512-OkiWY8jpknBANBA+K1zZ+sOc8o0mGTsP+eAplZMdiP7Jav5YQS6cI92/Y/0plfpHUQuPXFxzdTceDeM38OZodA==", + "version": "2.187.0", + "resolved": "https://registry.npmjs.org/node-opcua-basic-types/-/node-opcua-basic-types-2.187.0.tgz", + "integrity": "sha512-zdOrshbUDY8pXoqNn/3nby74i2t9y/PKwz3lJjdz8fHkPcHhouuecVzhiyDL6+gM5TjRC5qrRGg1K1MWF1976A==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-buffer-utils": "2.175.1", - "node-opcua-date-time": "2.175.1", - "node-opcua-guid": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-status-code": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-buffer-utils": "2.187.0", + "node-opcua-date-time": "2.187.0", + "node-opcua-guid": "2.184.0", + "node-opcua-nodeid": "2.187.0", + "node-opcua-status-code": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-binary-stream": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-binary-stream/-/node-opcua-binary-stream-2.175.1.tgz", - "integrity": "sha512-OORZZs6bg5RUMffhRUBDD4tZRWamCMCP1Olf/Y/k7GHvpT5RVwaHHYxDIWg8zng/0UxGyWktE6u2aleMyXG7sg==", + "version": "2.187.0", + "resolved": "https://registry.npmjs.org/node-opcua-binary-stream/-/node-opcua-binary-stream-2.187.0.tgz", + "integrity": "sha512-gj4IknNb/7rGd/NyTcTiIwdF2EuT70pIW9I0cdD0HGLC7X1hip+aEDGaa9enzpQgWqOfK0Pvfz6vU6YplwDW6w==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-buffer-utils": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-buffer-utils": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-buffer-utils": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-buffer-utils/-/node-opcua-buffer-utils-2.175.1.tgz", - "integrity": "sha512-j0fQ7zJaw7bbxylo6syU1+6KJVD/dshIQYNJmR3z3uy7q7M7xnpinHRkdJU3bBCJk4tURjHorIFIZUzN0qt3Jg==", - "license": "MIT" + "version": "2.187.0", + "resolved": "https://registry.npmjs.org/node-opcua-buffer-utils/-/node-opcua-buffer-utils-2.187.0.tgz", + "integrity": "sha512-1KKtaVnqzoP27/DL5WyrzYwq//mU0maflTL01q/QGVjSaM0wqe+KcU8DkmNpAQc7Od5gOiR4peIe5S2X1q4V3w==", + "license": "MIT", + "engines": { + "node": ">=22.13.0" + } }, "node_modules/node-opcua-certificate-manager": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-certificate-manager/-/node-opcua-certificate-manager-2.175.1.tgz", - "integrity": "sha512-u+MUjzQVX+lim/COQgYgpI6LyVOJt+GUZkN7Sdx1zvfaxEZ3Iu0yV0+FLnCe4zSPwz5aCtuYPQpn819tVuw4Cw==", - "license": "MIT", - "dependencies": { - "env-paths": "2.2.1", - "node-opcua-assert": "2.175.1", - "node-opcua-common": "2.175.1", - "node-opcua-crypto": "5.3.6", - "node-opcua-debug": "2.175.1", - "node-opcua-object-registry": "2.175.1", - "node-opcua-pki": "6.18.0", - "node-opcua-status-code": "2.175.1", + "version": "2.187.16", + "resolved": "https://registry.npmjs.org/node-opcua-certificate-manager/-/node-opcua-certificate-manager-2.187.16.tgz", + "integrity": "sha512-Z4HS2G3kvXGe8ZXqDH4d1ddJUKc/Sa19rGUsx6ZYbDAH2Q9yrWxz3ImZkNyYz/4v2TgpmaAsR7vIYRVlVcrckw==", + "license": "MIT", + "dependencies": { + "env-paths": "4.0.0", + "node-opcua-assert": "2.186.7", + "node-opcua-common": "2.187.9", + "node-opcua-crypto": "6.2.3", + "node-opcua-debug": "2.186.7", + "node-opcua-object-registry": "2.186.7", + "node-opcua-pki": "7.1.4", + "node-opcua-status-code": "2.187.0", "thenify-ex": "4.4.0" + }, + "engines": { + "node": ">=22.13.0" + } + }, + "node_modules/node-opcua-certificate-manager/node_modules/env-paths": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-4.0.0.tgz", + "integrity": "sha512-pxP8eL2SwwaTRi/KHYwLYXinDs7gL3jxFcBYmEdYfZmZXbaVDvdppd0XBU8qVz03rDfKZMXg1omHCbsJjZrMsw==", + "license": "MIT", + "dependencies": { + "is-safe-filename": "^0.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/node-opcua-chunkmanager": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-chunkmanager/-/node-opcua-chunkmanager-2.175.1.tgz", - "integrity": "sha512-3mfvJMPIfnFF0pL9flo2gGrU3sS1YuKaHFGdNEvi7iCaqebcVp+IoZJ0BfJW1S793jM78O4kV/kmFitCEHQfDw==", + "version": "2.187.8", + "resolved": "https://registry.npmjs.org/node-opcua-chunkmanager/-/node-opcua-chunkmanager-2.187.8.tgz", + "integrity": "sha512-Y/+pVE1dIyw6GI0rjcGlAp0ygoM3STrocjdRXLnhgAfToO0Fq7g6+3az4pI/u2Nx4/dNymWdvb87oNCJ/FSr7w==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-buffer-utils": "2.175.1", - "node-opcua-factory": "2.175.1", - "node-opcua-packet-assembler": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-buffer-utils": "2.187.0", + "node-opcua-factory": "2.187.0", + "node-opcua-packet-assembler": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-client": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-client/-/node-opcua-client-2.175.1.tgz", - "integrity": "sha512-fXrsFe2lK9sFIH0HdE0EGQg1PgzhG/V6f1abVun03XZbj8sb2flwNYZrr0fkqzx3MuZLDVZjtzTt3mnu7XQZkA==", + "version": "2.187.16", + "resolved": "https://registry.npmjs.org/node-opcua-client/-/node-opcua-client-2.187.16.tgz", + "integrity": "sha512-pL96zOuHLi50AGk28mLoCRVlkUMN2pZdy0SCI1lyiYTrLMuXNmaPvaVvsMTrQmUhbMCCBvu82zDSV0fDVbmppg==", "license": "MIT", "dependencies": { "@ster5/global-mutex": "^3.3.0", - "chalk": "4.1.2", - "node-opcua-alarm-condition": "2.175.1", - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-buffer-utils": "2.175.1", - "node-opcua-certificate-manager": "2.175.1", - "node-opcua-client-dynamic-extension-object": "2.175.1", - "node-opcua-common": "2.175.1", - "node-opcua-constants": "2.175.1", - "node-opcua-crypto": "5.3.6", - "node-opcua-data-model": "2.175.1", - "node-opcua-data-value": "2.175.1", - "node-opcua-date-time": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-extension-object": "2.175.1", - "node-opcua-hostname": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-numeric-range": "2.175.1", - "node-opcua-object-registry": "2.175.1", - "node-opcua-pki": "6.18.0", - "node-opcua-pseudo-session": "2.175.1", - "node-opcua-schemas": "2.175.1", - "node-opcua-secure-channel": "2.175.1", - "node-opcua-service-browse": "2.175.1", - "node-opcua-service-call": "2.175.1", - "node-opcua-service-discovery": "2.175.1", - "node-opcua-service-endpoints": "2.175.1", - "node-opcua-service-filter": "2.175.1", - "node-opcua-service-history": "2.175.1", - "node-opcua-service-query": "2.175.1", - "node-opcua-service-read": "2.175.1", - "node-opcua-service-register-node": "2.175.1", - "node-opcua-service-secure-channel": "2.175.1", - "node-opcua-service-session": "2.175.1", - "node-opcua-service-subscription": "2.175.1", - "node-opcua-service-translate-browse-path": "2.175.1", - "node-opcua-service-write": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-transport": "2.175.1", - "node-opcua-types": "2.175.1", - "node-opcua-utils": "2.175.1", - "node-opcua-variant": "2.175.1", + "chalk": "6.0.1", + "node-opcua-alarm-condition": "2.187.16", + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-buffer-utils": "2.187.0", + "node-opcua-certificate-manager": "2.187.16", + "node-opcua-client-dynamic-extension-object": "2.187.16", + "node-opcua-common": "2.187.9", + "node-opcua-constants": "2.185.0", + "node-opcua-crypto": "6.2.3", + "node-opcua-data-model": "2.187.0", + "node-opcua-data-value": "2.187.9", + "node-opcua-date-time": "2.187.0", + "node-opcua-debug": "2.186.7", + "node-opcua-extension-object": "2.187.0", + "node-opcua-hostname": "2.187.6", + "node-opcua-nodeid": "2.187.0", + "node-opcua-numeric-range": "2.187.0", + "node-opcua-object-registry": "2.186.7", + "node-opcua-pki": "7.1.4", + "node-opcua-pseudo-session": "2.187.16", + "node-opcua-schemas": "2.187.0", + "node-opcua-secure-channel": "2.187.16", + "node-opcua-service-browse": "2.187.9", + "node-opcua-service-call": "2.187.9", + "node-opcua-service-discovery": "2.187.9", + "node-opcua-service-endpoints": "2.187.9", + "node-opcua-service-filter": "2.187.14", + "node-opcua-service-history": "2.187.9", + "node-opcua-service-query": "2.187.9", + "node-opcua-service-read": "2.187.9", + "node-opcua-service-register-node": "2.187.9", + "node-opcua-service-secure-channel": "2.187.9", + "node-opcua-service-session": "2.187.9", + "node-opcua-service-subscription": "2.187.16", + "node-opcua-service-translate-browse-path": "2.187.9", + "node-opcua-service-write": "2.187.9", + "node-opcua-status-code": "2.187.0", + "node-opcua-transport": "2.187.8", + "node-opcua-types": "2.187.9", + "node-opcua-utils": "2.187.0", + "node-opcua-variant": "2.187.0", "thenify-ex": "4.4.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-client-dynamic-extension-object": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-client-dynamic-extension-object/-/node-opcua-client-dynamic-extension-object-2.175.1.tgz", - "integrity": "sha512-jtGfH0HaTKxSGRUNR0DVvJwddUOY3VYNbxAFKbAvWaDliA+pO0sbPl++V19SMVo9ahbPcRz/LLxeeoqZmDi5QQ==", - "license": "MIT", - "dependencies": { - "chalk": "4.1.2", - "node-opcua-assert": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-constants": "2.175.1", - "node-opcua-data-model": "2.175.1", - "node-opcua-data-value": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-extension-object": "2.175.1", - "node-opcua-factory": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-pseudo-session": "2.175.1", - "node-opcua-schemas": "2.175.1", - "node-opcua-service-browse": "2.175.1", - "node-opcua-service-translate-browse-path": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-types": "2.175.1", - "node-opcua-variant": "2.175.1" + "version": "2.187.16", + "resolved": "https://registry.npmjs.org/node-opcua-client-dynamic-extension-object/-/node-opcua-client-dynamic-extension-object-2.187.16.tgz", + "integrity": "sha512-FmJkHm3i8yqX1qXbM/GJk3W6wkF+aCx0iXtXCAsX9PGANvJ+m/qrJfI+5N5uJj6mY9QnBsPofNpvwwua7X8elA==", + "license": "MIT", + "dependencies": { + "chalk": "6.0.1", + "node-opcua-assert": "2.186.7", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-constants": "2.185.0", + "node-opcua-data-model": "2.187.0", + "node-opcua-data-value": "2.187.9", + "node-opcua-debug": "2.186.7", + "node-opcua-extension-object": "2.187.0", + "node-opcua-factory": "2.187.0", + "node-opcua-nodeid": "2.187.0", + "node-opcua-pseudo-session": "2.187.16", + "node-opcua-schemas": "2.187.0", + "node-opcua-service-browse": "2.187.9", + "node-opcua-service-translate-browse-path": "2.187.9", + "node-opcua-status-code": "2.187.0", + "node-opcua-types": "2.187.9", + "node-opcua-utils": "2.187.0", + "node-opcua-variant": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-client-proxy": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-client-proxy/-/node-opcua-client-proxy-2.175.1.tgz", - "integrity": "sha512-+Fge1kFcTERAYyhCb+A1VoWxLGB463uA8tIoKdwPaDNHHqcVwMWqCk3N6WIMPFRbvASB79WvaHxk8U6uArv/TQ==", - "license": "MIT", - "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-constants": "2.175.1", - "node-opcua-data-model": "2.175.1", - "node-opcua-data-value": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-pseudo-session": "2.175.1", - "node-opcua-service-browse": "2.175.1", - "node-opcua-service-call": "2.175.1", - "node-opcua-service-read": "2.175.1", - "node-opcua-service-subscription": "2.175.1", - "node-opcua-service-write": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-utils": "2.175.1", - "node-opcua-variant": "2.175.1" + "version": "2.187.16", + "resolved": "https://registry.npmjs.org/node-opcua-client-proxy/-/node-opcua-client-proxy-2.187.16.tgz", + "integrity": "sha512-E328w9Genyk1GNiESi0ZDqBrJ0HHmH4a0hjbKyGh2Q3qYvZzaR4JgJWDbi3kX3RYQhArKjIqe9EEjrRU1vpuWQ==", + "license": "MIT", + "dependencies": { + "node-opcua-assert": "2.186.7", + "node-opcua-constants": "2.185.0", + "node-opcua-data-model": "2.187.0", + "node-opcua-data-value": "2.187.9", + "node-opcua-debug": "2.186.7", + "node-opcua-nodeid": "2.187.0", + "node-opcua-pseudo-session": "2.187.16", + "node-opcua-service-browse": "2.187.9", + "node-opcua-service-call": "2.187.9", + "node-opcua-service-read": "2.187.9", + "node-opcua-service-subscription": "2.187.16", + "node-opcua-service-write": "2.187.9", + "node-opcua-status-code": "2.187.0", + "node-opcua-utils": "2.187.0", + "node-opcua-variant": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-common": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-common/-/node-opcua-common-2.175.1.tgz", - "integrity": "sha512-/pfuBAeN/BCawJ7eSsQQOBeD6sS4eEng9234edqzYcQusN3juXGsyARdUpiE2y19NB7X8sn9FklAQiVYLjGP8g==", + "version": "2.187.9", + "resolved": "https://registry.npmjs.org/node-opcua-common/-/node-opcua-common-2.187.9.tgz", + "integrity": "sha512-6iuqL1gDjkDc6198r79eO32cWRMXEebXTiBNGgEKSgyPLss5hgGh4+3i0bBw1WzCXFt7wgqoGVf+o+7lihsP7g==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-crypto": "5.3.6", - "node-opcua-status-code": "2.175.1", - "node-opcua-types": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-crypto": "6.2.3", + "node-opcua-status-code": "2.187.0", + "node-opcua-types": "2.187.9" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-constants": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-constants/-/node-opcua-constants-2.175.1.tgz", - "integrity": "sha512-o3icxyhe18cWRWefAa39saAYaPkPx/UmscFOOoZXX37BLcNiH7WNmfJ1T89rdtkDfVqkLXKWyh5ObzOKSohSig==", - "license": "MIT" + "version": "2.185.0", + "resolved": "https://registry.npmjs.org/node-opcua-constants/-/node-opcua-constants-2.185.0.tgz", + "integrity": "sha512-0H/It463ZKlgzQnrsGGcskI933vGGPmf4zCyM5Hb2jmlrImqpnM38xZMBi7ZDHzK2abUbewA73GftStlubRveA==", + "license": "MIT", + "engines": { + "node": ">=22.13.0" + } }, "node_modules/node-opcua-crypto": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/node-opcua-crypto/-/node-opcua-crypto-5.3.6.tgz", - "integrity": "sha512-XXfdMZhXgN8Epf2tJLpQ1a2v/AKa/E+qvaaFXt1wP5ElL1ImU0vs+qxvY3j+Bemz/aob6aelHVrNq1eVU2Fqng==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/node-opcua-crypto/-/node-opcua-crypto-6.2.3.tgz", + "integrity": "sha512-hQzZWpBr3fisPOboTZkg+OfFoR4pTih/oJoHQPHRdE6uOlDNKsKtZBfIQVU/pJPNWZdzOBMYlo1KxkZ6jMrOVQ==", "license": "MIT", "dependencies": { + "@peculiar/asn1-cms": "^2.11.0", + "@peculiar/asn1-pfx": "^2.11.0", + "@peculiar/asn1-pkcs8": "^2.11.0", + "@peculiar/asn1-pkcs9": "^2.11.0", + "@peculiar/asn1-rsa": "^2.11.0", + "@peculiar/asn1-schema": "^2.11.0", + "@peculiar/asn1-x509": "^2.11.0", "@peculiar/webcrypto": "^1.7.1", - "@peculiar/x509": "^2.0.0", + "@peculiar/x509": "^2.1.0", "reflect-metadata": "^0.2.2", "sshpk": "^1.18.0" + }, + "peerDependencies": { + "node-opcua-crypto-web": "^6.0.0" + }, + "peerDependenciesMeta": { + "node-opcua-crypto-web": { + "optional": true + } } }, "node_modules/node-opcua-data-access": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-data-access/-/node-opcua-data-access-2.175.1.tgz", - "integrity": "sha512-Y2trw/Wal0TboNipmeJ9VWr5p8xNHGAP1HnWks/mdoyqKcNNNc9Alz0w1/Rpevm5fX/1Si7Wp+S4iQspHZJJ3A==", + "version": "2.187.9", + "resolved": "https://registry.npmjs.org/node-opcua-data-access/-/node-opcua-data-access-2.187.9.tgz", + "integrity": "sha512-IZorS1Ew3cah6ftXBvQZPK12k8iCbWySkhu0oJaKmqhuiZXprLndS+z6QuvRn7ylAVBIksfeAr9pgQpYyLDTgw==", "license": "MIT", "dependencies": { - "node-opcua-data-model": "2.175.1", - "node-opcua-types": "2.175.1" + "node-opcua-data-model": "2.187.0", + "node-opcua-types": "2.187.9" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-data-model": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-data-model/-/node-opcua-data-model-2.175.1.tgz", - "integrity": "sha512-cCjorTjSH3iC9zE8LOb1pyRcl5UEn6bpnzn80VMr5CcLh7uCd+6stgol9Nkr7NglXghWtTqoqyeka69qVUwC8Q==", + "version": "2.187.0", + "resolved": "https://registry.npmjs.org/node-opcua-data-model/-/node-opcua-data-model-2.187.0.tgz", + "integrity": "sha512-xnTvGrcXwqUbbRBLynZ6r1mckM8ybn3XKeHtlxXafTuhQb07PnBu+YmdNc6sXL8/ENevA7S7Lmsl3S9C2Sx5uQ==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-enum": "2.175.1", - "node-opcua-factory": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-status-code": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-enum": "2.187.0", + "node-opcua-factory": "2.187.0", + "node-opcua-nodeid": "2.187.0", + "node-opcua-status-code": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-data-value": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-data-value/-/node-opcua-data-value-2.175.1.tgz", - "integrity": "sha512-9tkQwc/I/HOyJWIB9j23PsTkuqHkV5DZymllw3oz/lNhYPPwEucS9LBwqUaJSodo69YNWTA1yz16aHqgbrJn7A==", + "version": "2.187.9", + "resolved": "https://registry.npmjs.org/node-opcua-data-value/-/node-opcua-data-value-2.187.9.tgz", + "integrity": "sha512-Dj5uiIeqCwTP9EOjNrLtBfyHQA2sQlkxvUll9HrlL3iFNL+Qoo+M/Q9eCmzpMvbUj4vafKSGPGjU6rgq3mQWrw==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-data-model": "2.175.1", - "node-opcua-date-time": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-enum": "2.175.1", - "node-opcua-factory": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-variant": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-data-model": "2.187.0", + "node-opcua-date-time": "2.187.0", + "node-opcua-debug": "2.186.7", + "node-opcua-enum": "2.187.0", + "node-opcua-factory": "2.187.0", + "node-opcua-numeric-range": "2.187.0", + "node-opcua-status-code": "2.187.0", + "node-opcua-variant": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-date-time": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-date-time/-/node-opcua-date-time-2.175.1.tgz", - "integrity": "sha512-ngj2T6NA3ZufMxZcPyoHsNOCvS0wBx/VXVf0qjcrHFF9d/rAoCrAWJ5lhvzq8wN9RVXzqQ9XspdAo4bawKOFNA==", + "version": "2.187.0", + "resolved": "https://registry.npmjs.org/node-opcua-date-time/-/node-opcua-date-time-2.187.0.tgz", + "integrity": "sha512-A2nNB5Jc5dPjW+Erk7xafJlmZ0pCJNl6Wbpgr1P64KrkCwEuY4NYQceo8mCYCBSz2bcYbtL+fbp+KEEuNbGEjw==", "license": "MIT", "dependencies": { - "long": "5.3.2", - "node-opcua-assert": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-utils": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-utils": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-debug": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-debug/-/node-opcua-debug-2.175.1.tgz", - "integrity": "sha512-ppDqzEz03rldixADuypjEa/UXUJXKQoYkjigavFXtruE8IcJ+afIxZR8qOYMdw646+BvbLF4mABog32TIV5OnQ==", + "version": "2.186.7", + "resolved": "https://registry.npmjs.org/node-opcua-debug/-/node-opcua-debug-2.186.7.tgz", + "integrity": "sha512-xWEpA1gRtHAQaSleKqUv4Vej30RRFa+jzCygkmN7ZKLpCKy0DQi1sq5lef5StfLyav0eejV7XorXw3WHfJGXWA==", "license": "MIT", "dependencies": { - "chalk": "4.1.2", + "chalk": "6.0.1", "hexy": "0.4.0", - "node-opcua-assert": "2.175.1" + "node-opcua-assert": "2.186.7" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-enum": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-enum/-/node-opcua-enum-2.175.1.tgz", - "integrity": "sha512-IitPGibF9o8MClF1fDR7euxwl7dqVxqwjn8Rwv/CxLSpnlVKx9VUIqucuuIgvfEjb4NtwZ5r/Gb8noWUd3sBXQ==", - "license": "MIT" + "version": "2.187.0", + "resolved": "https://registry.npmjs.org/node-opcua-enum/-/node-opcua-enum-2.187.0.tgz", + "integrity": "sha512-xMEGdleMpsbhlSyaIndkyjH6Npv/v/GYjWyWBqy4/Ma/OLNE59Ifxynga3lnS+VZg+GkSUfIK1I5po/fxR57zw==", + "license": "MIT", + "engines": { + "node": ">=22.13.0" + } }, "node_modules/node-opcua-extension-object": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-extension-object/-/node-opcua-extension-object-2.175.1.tgz", - "integrity": "sha512-wtGGwBgwONfAvsLXRcrA3VuMGxLv7o3qQGvEA20CZMCigny+Q4N/aPOhKjTrX+zcbrAbmV0oK/EMABSfHd+Xjw==", + "version": "2.187.0", + "resolved": "https://registry.npmjs.org/node-opcua-extension-object/-/node-opcua-extension-object-2.187.0.tgz", + "integrity": "sha512-0JF1dkrfaAy1XkjPKR7DrTpciida1ifIycVWHY3PrdhQz5m9yee6j6wBKynTwfQWWt3YgGgPVxHwVk0culmy7Q==", "license": "MIT", "dependencies": { - "chalk": "4.1.2", - "node-opcua-basic-types": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-factory": "2.175.1", - "node-opcua-nodeid": "2.175.1" + "chalk": "6.0.1", + "node-opcua-basic-types": "2.187.0", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-debug": "2.186.7", + "node-opcua-factory": "2.187.0", + "node-opcua-nodeid": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-factory": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-factory/-/node-opcua-factory-2.175.1.tgz", - "integrity": "sha512-IZ1tm4PhFyCKNdE69IQ+2Fab5QP1RR5N6eUjmLYuzRkvSUg3o8fBvU7XYydGiaDVYGfDZg6og/eW8YVdePk/Jw==", + "version": "2.187.0", + "resolved": "https://registry.npmjs.org/node-opcua-factory/-/node-opcua-factory-2.187.0.tgz", + "integrity": "sha512-adNCMnwCHXGw8lVu33czXTDkXJgNZk1MUmDr6tLy4U9HZE46adUaYhVEU4VKh1jQPgF4dKZFaDPcsuAL67lSRA==", "license": "MIT", "dependencies": { - "chalk": "4.1.2", - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-constants": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-enum": "2.175.1", - "node-opcua-guid": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-utils": "2.175.1" + "chalk": "6.0.1", + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-constants": "2.185.0", + "node-opcua-debug": "2.186.7", + "node-opcua-enum": "2.187.0", + "node-opcua-guid": "2.184.0", + "node-opcua-nodeid": "2.187.0", + "node-opcua-status-code": "2.187.0", + "node-opcua-utils": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-guid": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-guid/-/node-opcua-guid-2.175.1.tgz", - "integrity": "sha512-NFaMaqd4IflvzImukSloM3Sf5tohIdh+m2OvEfkWA54pzZOebayXwgYHK3IkY16Ey2YWSSmSx7SfLWmjVbUYxw==", - "license": "MIT" + "version": "2.184.0", + "resolved": "https://registry.npmjs.org/node-opcua-guid/-/node-opcua-guid-2.184.0.tgz", + "integrity": "sha512-g5umlVt7MALZdvBNE0dK6uPlXsjhdLRrJRpT8hqMw847nuMfBIkdLKpccoz8fH61s3KOF8UOmHZTpTVHXSmNgw==", + "license": "MIT", + "engines": { + "node": ">=22.13.0" + } }, "node_modules/node-opcua-hostname": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-hostname/-/node-opcua-hostname-2.175.1.tgz", - "integrity": "sha512-boaF8hm56sQjUqf0jkYBmnkc4VjvFwZTKffs5hVLiT+MyW8NXQkIkjlLm/kjNIr4YWnHrVYMb7UI8slJ54xVZA==", - "license": "MIT" + "version": "2.187.6", + "resolved": "https://registry.npmjs.org/node-opcua-hostname/-/node-opcua-hostname-2.187.6.tgz", + "integrity": "sha512-zTLtwnmFTduEeIjaTc9xRNWEPODvDm8CGajQMMyFmpCABIrd8i8cps9YcIU5ZJLite5aS7WsW1K8y1VeQDg0kg==", + "license": "MIT", + "engines": { + "node": ">=22.13.0" + } + }, + "node_modules/node-opcua-json": { + "version": "2.187.16", + "resolved": "https://registry.npmjs.org/node-opcua-json/-/node-opcua-json-2.187.16.tgz", + "integrity": "sha512-qR5HzzjoSqIFKwK4D3kv+db37t1CGyN/zejPrxSxNuNoul1TB8/LiPhBT7vMHfH0GwJU0nmXh3Xgpihan+SNiA==", + "license": "MIT", + "dependencies": { + "node-opcua-basic-types": "2.187.0", + "node-opcua-data-model": "2.187.0", + "node-opcua-data-value": "2.187.9", + "node-opcua-date-time": "2.187.0", + "node-opcua-debug": "2.186.7", + "node-opcua-extension-object": "2.187.0", + "node-opcua-factory": "2.187.0", + "node-opcua-nodeid": "2.187.0", + "node-opcua-numeric-range": "2.187.0", + "node-opcua-status-code": "2.187.0", + "node-opcua-types": "2.187.9", + "node-opcua-variant": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" + } }, "node_modules/node-opcua-nodeid": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-nodeid/-/node-opcua-nodeid-2.175.1.tgz", - "integrity": "sha512-aHRMKI2ruyQCh31THy8gL5ukul+uA3fZKsKt7Fmah174JhxNrjDcKL73K/YTn5sMxhrAsS6vsbxtWN57zVgCdA==", + "version": "2.187.0", + "resolved": "https://registry.npmjs.org/node-opcua-nodeid/-/node-opcua-nodeid-2.187.0.tgz", + "integrity": "sha512-mRTQu2h6358yaDabQ/lwDSFCxoDyWVh3Ve8KfALJroTdjjut4VYSAGynlvrOWuGcbyGY3dI0oCeFTpfjndW6hw==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-constants": "2.175.1", - "node-opcua-guid": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-constants": "2.185.0", + "node-opcua-guid": "2.184.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-nodeset-ua": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-nodeset-ua/-/node-opcua-nodeset-ua-2.175.1.tgz", - "integrity": "sha512-pgYIgg4MS6SAgCXHOr4hG7u4zE+BdNlV0IJXpXB7HJeEtDymnO/ie3hoWdh6gvWm+mYnZZKHURgBgzvlQdUASQ==", + "version": "2.187.14", + "resolved": "https://registry.npmjs.org/node-opcua-nodeset-ua/-/node-opcua-nodeset-ua-2.187.14.tgz", + "integrity": "sha512-K0sQmjBHiknRrkVgkc7kdnUgb5IIXnyaYeVu3zlV6cOUhr0Z2ms95UcG/9a0qVBIwfN184ilNqJAeizwrKKbYg==", "license": "MIT", "dependencies": { - "node-opcua-address-space-base": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-data-access": "2.175.1", - "node-opcua-data-model": "2.175.1", - "node-opcua-data-value": "2.175.1", - "node-opcua-extension-object": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-variant": "2.175.1" + "node-opcua-address-space-base": "2.187.14", + "node-opcua-basic-types": "2.187.0", + "node-opcua-data-access": "2.187.9", + "node-opcua-data-model": "2.187.0", + "node-opcua-data-value": "2.187.9", + "node-opcua-extension-object": "2.187.0", + "node-opcua-nodeid": "2.187.0", + "node-opcua-status-code": "2.187.0", + "node-opcua-variant": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-nodesets": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-nodesets/-/node-opcua-nodesets-2.175.1.tgz", - "integrity": "sha512-4u/lrw8BOHhInw9aWmiQW657NUgbHOLmifnBY+QU4kwjZ92QshrmSLXTVLDj3V7s0krw+Rzyrqyrkhn7I0+UEg==", - "license": "MIT" + "version": "2.187.4", + "resolved": "https://registry.npmjs.org/node-opcua-nodesets/-/node-opcua-nodesets-2.187.4.tgz", + "integrity": "sha512-1O0FKlTSmTLqi0r+VVEoDQyt5FZKgxqYlf5LB0dNcw26oSnPZkBPEjywW9/tzCrJZbeK1TEA8tawZ0KYbwrq4Q==", + "license": "MIT", + "engines": { + "node": ">=22.13.0" + } }, "node_modules/node-opcua-numeric-range": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-numeric-range/-/node-opcua-numeric-range-2.175.1.tgz", - "integrity": "sha512-zYToOjPBn7BalZzOcLPnQINWSPBJTqYdp0W9GtRby6zx2hHa95dgQ5YsD6IIxLPVCQY/k92axsDOIednI7IWZA==", + "version": "2.187.0", + "resolved": "https://registry.npmjs.org/node-opcua-numeric-range/-/node-opcua-numeric-range-2.187.0.tgz", + "integrity": "sha512-/ncx0jOs/DMdHIUSp03Ohayy1AgsZOPa+4SSQno7t+Cn/CCQmzC6QNeb83+quPppCaZ2aCSUz4Iuv9Bzf/3BBw==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-factory": "2.175.1", - "node-opcua-status-code": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-factory": "2.187.0", + "node-opcua-status-code": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-object-registry": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-object-registry/-/node-opcua-object-registry-2.175.1.tgz", - "integrity": "sha512-bG1WqH/dXaaUw+tu/L+s6WgroPCqP7QAkfYppVOe9FcV074G5BXr1Ddf8PlLqxvdnouDrf7+0JBjc+zjiGn8Ew==", + "version": "2.186.7", + "resolved": "https://registry.npmjs.org/node-opcua-object-registry/-/node-opcua-object-registry-2.186.7.tgz", + "integrity": "sha512-3bcG0IHBvM0DghgOpR4wh0ZfiwGK4CCpBYr6aSQtNyVOp5DcY/YgpIlBi4/qa2M1ErL+SPm7z1RGaSr3oLHbPQ==", "license": "MIT", "dependencies": { - "node-opcua-debug": "2.175.1" + "node-opcua-debug": "2.186.7" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-packet-analyzer": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-packet-analyzer/-/node-opcua-packet-analyzer-2.175.1.tgz", - "integrity": "sha512-0fsAzQNm95aVxI77KMTn5wly5522gUvDf2P7IMZE01TIz4p1QFsWDPtuB+ajHILgLyLcW+E8XguJ1NJp4fZjeA==", + "version": "2.187.0", + "resolved": "https://registry.npmjs.org/node-opcua-packet-analyzer/-/node-opcua-packet-analyzer-2.187.0.tgz", + "integrity": "sha512-/xAwFs8SFdfseV0mH6HUlxQZv/VmJrBiIF9f0XNRvdbqdPaKr+WUrBZ8BODvZMaj/dyHNnGnvG/Etgq+JCjOlg==", "license": "MIT", "dependencies": { - "chalk": "4.1.2", - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-factory": "2.175.1", - "node-opcua-utils": "2.175.1" + "chalk": "6.0.1", + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-debug": "2.186.7", + "node-opcua-factory": "2.187.0", + "node-opcua-utils": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-packet-assembler": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-packet-assembler/-/node-opcua-packet-assembler-2.175.1.tgz", - "integrity": "sha512-pZzh83GWZukdYEIoYiOX7TgcnU8Ldpi8rjjLXkak8mc7cDzeF6TWdffH5kCStRBX5CzvcpdpUB+O/+eo62MlwA==", + "version": "2.187.0", + "resolved": "https://registry.npmjs.org/node-opcua-packet-assembler/-/node-opcua-packet-assembler-2.187.0.tgz", + "integrity": "sha512-awQZ2msNRPuNv/Zcd4b8MODi1Xab1WUh5T3ebrx3lpdDC9whiCWAvHZXYl4XDLLjyCpVjTksrFmW/cKhT/U93g==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-debug": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-debug": "2.186.7" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-pki": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/node-opcua-pki/-/node-opcua-pki-6.18.0.tgz", - "integrity": "sha512-y3BKrgo9LYDUkP1pcpmAzZDXJJXr/h464XV6PhVXjibrQOAXPW3oPk75WzVZNl6OLUtEp4WXn3RxwQ2RtJM9yQ==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/node-opcua-pki/-/node-opcua-pki-7.1.4.tgz", + "integrity": "sha512-dkQNnfNAMN6CHP+YDw1iBU7WCGU2s1CYTdiWNCqQ0po4VR70GfuqgJa9a+MuvnR1CQXVudxoZzU8Sr+Iw1QX5Q==", "license": "MIT", "dependencies": { "@ster5/global-mutex": "^3.3.0", "byline": "^5.0.0", - "chalk": "4.1.2", + "chalk": "6.0.1", "chokidar": "4.0.3", "command-line-args": "^6.0.2", "command-line-usage": "^7.0.4", - "node-opcua-crypto": "5.3.6", - "yauzl": "^3.3.0" + "node-opcua-crypto": "6.2.3", + "yauzl": "^3.4.0" }, "bin": { - "node-opcua-pki": "dist/bin/pki.mjs", - "pki": "dist/bin/pki.mjs" + "node-opcua-pki": "dist/bin/pki.js", + "pki": "dist/bin/pki.js" } }, "node_modules/node-opcua-pseudo-session": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-pseudo-session/-/node-opcua-pseudo-session-2.175.1.tgz", - "integrity": "sha512-w2tyiqmZDQVo4/4YPjGjAJ688AxzOaQE0s5AHDnKFFYWmC1nq4LdhrYyAg1Vf1L+p8lNyB3KHn9UN1OKxCCcmw==", - "license": "MIT", - "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-constants": "2.175.1", - "node-opcua-data-model": "2.175.1", - "node-opcua-data-value": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-service-browse": "2.175.1", - "node-opcua-service-call": "2.175.1", - "node-opcua-service-read": "2.175.1", - "node-opcua-service-subscription": "2.175.1", - "node-opcua-service-translate-browse-path": "2.175.1", - "node-opcua-service-write": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-types": "2.175.1", - "node-opcua-utils": "2.175.1", - "node-opcua-variant": "2.175.1" + "version": "2.187.16", + "resolved": "https://registry.npmjs.org/node-opcua-pseudo-session/-/node-opcua-pseudo-session-2.187.16.tgz", + "integrity": "sha512-Y5jQzXPimA0+smDhVIzpI692C7wWMVT719rWDwAz7wfL+4pYyXPxe9mLxkWFxrgxpsPH8seUED3vI9EquL99yw==", + "license": "MIT", + "dependencies": { + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-constants": "2.185.0", + "node-opcua-crypto": "6.2.3", + "node-opcua-data-model": "2.187.0", + "node-opcua-data-value": "2.187.9", + "node-opcua-debug": "2.186.7", + "node-opcua-nodeid": "2.187.0", + "node-opcua-service-browse": "2.187.9", + "node-opcua-service-call": "2.187.9", + "node-opcua-service-read": "2.187.9", + "node-opcua-service-subscription": "2.187.16", + "node-opcua-service-translate-browse-path": "2.187.9", + "node-opcua-service-write": "2.187.9", + "node-opcua-status-code": "2.187.0", + "node-opcua-types": "2.187.9", + "node-opcua-utils": "2.187.0", + "node-opcua-variant": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-schemas": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-schemas/-/node-opcua-schemas-2.175.1.tgz", - "integrity": "sha512-Kcg2IcSjwdoRK0m5CRyX/kgW8hr40LQY+VhjygbH5wePMyTRF5H1iGmpPnGY86GYXK4Hdib6u0InEwSSpdLdLg==", + "version": "2.187.0", + "resolved": "https://registry.npmjs.org/node-opcua-schemas/-/node-opcua-schemas-2.187.0.tgz", + "integrity": "sha512-DvFFXTLC7sAPaNMr8p9c4IyQSLSd7n+kHEWqxdDWtOUtct/JYsmCPIw2/BJxF/OMuatfh8IfRoO4/6Gx5HVuOw==", "license": "MIT", "dependencies": { - "chalk": "4.1.2", - "node-opcua-assert": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-extension-object": "2.175.1", - "node-opcua-factory": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-variant": "2.175.1", - "node-opcua-xml2json": "2.175.1" + "chalk": "6.0.1", + "node-opcua-assert": "2.186.7", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-debug": "2.186.7", + "node-opcua-extension-object": "2.187.0", + "node-opcua-factory": "2.187.0", + "node-opcua-nodeid": "2.187.0", + "node-opcua-variant": "2.187.0", + "node-opcua-xml2json": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-secure-channel": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-secure-channel/-/node-opcua-secure-channel-2.175.1.tgz", - "integrity": "sha512-xJeZvj6RX1wXWLU1NTi2wnHHvIayUP3chPZxHYzTVX3Aw+wWbGu8ghXNKEr7htoLk/p9Mr7gPIVWnCMxxVeqxw==", + "version": "2.187.16", + "resolved": "https://registry.npmjs.org/node-opcua-secure-channel/-/node-opcua-secure-channel-2.187.16.tgz", + "integrity": "sha512-sfkAUJlTUXmTkOoJg0XgxK7LuEuV/VFrRyyP2oxwBPCzb1xNyOwwNvH2iaCCvbftUjnwIJnwaRZ2u5JrIxGrGg==", "license": "MIT", "dependencies": { "backoff": "^2.5.0", - "chalk": "4.1.2", - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-chunkmanager": "2.175.1", - "node-opcua-common": "2.175.1", - "node-opcua-crypto": "5.3.6", - "node-opcua-debug": "2.175.1", - "node-opcua-factory": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-object-registry": "2.175.1", - "node-opcua-packet-analyzer": "2.175.1", - "node-opcua-service-endpoints": "2.175.1", - "node-opcua-service-secure-channel": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-transport": "2.175.1", - "node-opcua-types": "2.175.1", - "node-opcua-utils": "2.175.1" + "chalk": "6.0.1", + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-chunkmanager": "2.187.8", + "node-opcua-common": "2.187.9", + "node-opcua-crypto": "6.2.3", + "node-opcua-debug": "2.186.7", + "node-opcua-factory": "2.187.0", + "node-opcua-nodeid": "2.187.0", + "node-opcua-object-registry": "2.186.7", + "node-opcua-packet-analyzer": "2.187.0", + "node-opcua-packet-assembler": "2.187.0", + "node-opcua-service-endpoints": "2.187.9", + "node-opcua-service-secure-channel": "2.187.9", + "node-opcua-status-code": "2.187.0", + "node-opcua-transport": "2.187.8", + "node-opcua-types": "2.187.9", + "node-opcua-utils": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-server": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-server/-/node-opcua-server-2.175.1.tgz", - "integrity": "sha512-GhXroHlCE0N4xXoV1sM5IJKl4mO3HnOfSGC6AxNucW5zJZERX5r5hod2ZWE1WlsJ/m+INT2dlepKZfGyUzu42Q==", + "version": "2.187.16", + "resolved": "https://registry.npmjs.org/node-opcua-server/-/node-opcua-server-2.187.16.tgz", + "integrity": "sha512-/vdOkaKysHtBsFAHROTgKNLiuBaSCl5bY2l/CyMmramKl1jHsZnLO6Jow7mM+vgm0xynmVkTpc7ma00I2xx4Ig==", "license": "MIT", "dependencies": { "@ster5/global-mutex": "^3.3.0", - "chalk": "4.1.2", + "chalk": "6.0.1", "dequeue": "^1.0.5", "lodash.partition": "^4.6.0", "lodash.sortby": "^4.7.0", - "node-opcua-address-space": "2.175.1", - "node-opcua-address-space-base": "2.175.1", - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-certificate-manager": "2.175.1", - "node-opcua-client": "2.175.1", - "node-opcua-common": "2.175.1", - "node-opcua-constants": "2.175.1", - "node-opcua-crypto": "5.3.6", - "node-opcua-data-model": "2.175.1", - "node-opcua-data-value": "2.175.1", - "node-opcua-date-time": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-extension-object": "2.175.1", - "node-opcua-factory": "2.175.1", - "node-opcua-hostname": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-nodesets": "2.175.1", - "node-opcua-numeric-range": "2.175.1", - "node-opcua-object-registry": "2.175.1", - "node-opcua-pki": "6.18.0", - "node-opcua-secure-channel": "2.175.1", - "node-opcua-service-browse": "2.175.1", - "node-opcua-service-call": "2.175.1", - "node-opcua-service-discovery": "2.175.1", - "node-opcua-service-endpoints": "2.175.1", - "node-opcua-service-filter": "2.175.1", - "node-opcua-service-history": "2.175.1", - "node-opcua-service-node-management": "2.175.1", - "node-opcua-service-query": "2.175.1", - "node-opcua-service-read": "2.175.1", - "node-opcua-service-register-node": "2.175.1", - "node-opcua-service-secure-channel": "2.175.1", - "node-opcua-service-session": "2.175.1", - "node-opcua-service-subscription": "2.175.1", - "node-opcua-service-translate-browse-path": "2.175.1", - "node-opcua-service-write": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-transport": "2.175.1", - "node-opcua-types": "2.175.1", - "node-opcua-utils": "2.175.1", - "node-opcua-variant": "2.175.1", + "node-opcua-address-space": "2.187.16", + "node-opcua-address-space-base": "2.187.14", + "node-opcua-address-space-store": "2.187.14", + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-certificate-manager": "2.187.16", + "node-opcua-client": "2.187.16", + "node-opcua-common": "2.187.9", + "node-opcua-constants": "2.185.0", + "node-opcua-crypto": "6.2.3", + "node-opcua-data-model": "2.187.0", + "node-opcua-data-value": "2.187.9", + "node-opcua-date-time": "2.187.0", + "node-opcua-debug": "2.186.7", + "node-opcua-extension-object": "2.187.0", + "node-opcua-factory": "2.187.0", + "node-opcua-hostname": "2.187.6", + "node-opcua-nodeid": "2.187.0", + "node-opcua-nodesets": "2.187.4", + "node-opcua-numeric-range": "2.187.0", + "node-opcua-object-registry": "2.186.7", + "node-opcua-pki": "7.1.4", + "node-opcua-secure-channel": "2.187.16", + "node-opcua-service-browse": "2.187.9", + "node-opcua-service-call": "2.187.9", + "node-opcua-service-discovery": "2.187.9", + "node-opcua-service-endpoints": "2.187.9", + "node-opcua-service-filter": "2.187.14", + "node-opcua-service-history": "2.187.9", + "node-opcua-service-node-management": "2.187.9", + "node-opcua-service-query": "2.187.9", + "node-opcua-service-read": "2.187.9", + "node-opcua-service-register-node": "2.187.9", + "node-opcua-service-secure-channel": "2.187.9", + "node-opcua-service-session": "2.187.9", + "node-opcua-service-subscription": "2.187.16", + "node-opcua-service-translate-browse-path": "2.187.9", + "node-opcua-service-write": "2.187.9", + "node-opcua-status-code": "2.187.0", + "node-opcua-transport": "2.187.8", + "node-opcua-types": "2.187.9", + "node-opcua-uanodeset-json": "2.187.16", + "node-opcua-utils": "2.187.0", + "node-opcua-variant": "2.187.0", "thenify-ex": "4.4.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-server-discovery": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-server-discovery/-/node-opcua-server-discovery-2.175.1.tgz", - "integrity": "sha512-IhGRA+zdw0TeiKIziO7CLYhKjtD8cTAsa7S74/hG4Ut8cTqfoAoAR+e3Ix9RKRynXemdemMG8f5Iajya0OWQgg==", - "license": "MIT", - "dependencies": { - "chalk": "4.1.2", - "env-paths": "2.2.1", - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-certificate-manager": "2.175.1", - "node-opcua-common": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-object-registry": "2.175.1", - "node-opcua-secure-channel": "2.175.1", - "node-opcua-server": "2.175.1", - "node-opcua-service-discovery": "2.175.1", - "node-opcua-service-endpoints": "2.175.1", - "node-opcua-status-code": "2.175.1", + "version": "2.187.16", + "resolved": "https://registry.npmjs.org/node-opcua-server-discovery/-/node-opcua-server-discovery-2.187.16.tgz", + "integrity": "sha512-ha2bxZ6GjfvM6idSwHJSEnuEPtdBB1si8aMXH9UfGZHAklDBuk8Lki9oztIFdqhCAa8WgMOJt1xf5uo8xqNJ/g==", + "license": "MIT", + "dependencies": { + "chalk": "6.0.1", + "env-paths": "4.0.0", + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-certificate-manager": "2.187.16", + "node-opcua-common": "2.187.9", + "node-opcua-crypto": "6.2.3", + "node-opcua-debug": "2.186.7", + "node-opcua-object-registry": "2.186.7", + "node-opcua-secure-channel": "2.187.16", + "node-opcua-server": "2.187.16", + "node-opcua-service-discovery": "2.187.9", + "node-opcua-service-endpoints": "2.187.9", + "node-opcua-status-code": "2.187.0", "sterfive-bonjour-service": "1.1.4", "thenify-ex": "4.4.0" + }, + "engines": { + "node": ">=22.13.0" } }, - "node_modules/node-opcua-service-browse": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-service-browse/-/node-opcua-service-browse-2.175.1.tgz", - "integrity": "sha512-HnTq2DHTYs9YBvQfjns2Ux5tXY/H0pIOwzpuK6NvL55ZoNyd5KReub2MM5s9DQSGUW36ggBRTCLr5YMjzzH4yA==", + "node_modules/node-opcua-server-discovery/node_modules/env-paths": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-4.0.0.tgz", + "integrity": "sha512-pxP8eL2SwwaTRi/KHYwLYXinDs7gL3jxFcBYmEdYfZmZXbaVDvdppd0XBU8qVz03rDfKZMXg1omHCbsJjZrMsw==", "license": "MIT", "dependencies": { - "node-opcua-data-model": "2.175.1", - "node-opcua-types": "2.175.1" + "is-safe-filename": "^0.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/node-opcua-service-browse": { + "version": "2.187.9", + "resolved": "https://registry.npmjs.org/node-opcua-service-browse/-/node-opcua-service-browse-2.187.9.tgz", + "integrity": "sha512-NBGD6AroOGqfvGQJYR8SJyeYjKuoP/Bfm7sk3ElUol10jCPD/s2sWY2VrapKvqi2iAUc5PcjUoGFlWu2tsVrpA==", + "license": "MIT", + "dependencies": { + "node-opcua-data-model": "2.187.0", + "node-opcua-types": "2.187.9" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-service-call": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-service-call/-/node-opcua-service-call-2.175.1.tgz", - "integrity": "sha512-URaWpLorjBj4mOHWnXPsnTRDJJtyl6u271iDAEUyNHA2RYlwlRG/JnQ+t0lQF11ru1W0MnSFrJ8HDPeV0NGuEw==", + "version": "2.187.9", + "resolved": "https://registry.npmjs.org/node-opcua-service-call/-/node-opcua-service-call-2.187.9.tgz", + "integrity": "sha512-RXWRvX/YeOIy+9aK6rbJo1e9FsWWPWf5UrV7nVRvIURk+8BomIUt5LRcxVaEfFDoDgWNB5QEMgpc6J95JfnGDg==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-types": "2.175.1", - "node-opcua-variant": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-nodeid": "2.187.0", + "node-opcua-types": "2.187.9", + "node-opcua-variant": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-service-discovery": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-service-discovery/-/node-opcua-service-discovery-2.175.1.tgz", - "integrity": "sha512-Afx3hvTTz5vjtuOLElcF8VzdU50xIJC0c/LBokqQ8W2iJ+gS1uutkFr/2dEIoNmV+U3inqWmgxOmn7X4BTTb3A==", + "version": "2.187.9", + "resolved": "https://registry.npmjs.org/node-opcua-service-discovery/-/node-opcua-service-discovery-2.187.9.tgz", + "integrity": "sha512-ywJsf9lnIDDCGMQz1/QCoPV/GtCA4GVL24Kvxd5sd++a1gOL4lN6P7kVGM/15P+z6MhDRKTNkP+MJnBusNnpLA==", "license": "MIT", "dependencies": { - "chalk": "4.1.2", - "node-opcua-assert": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-object-registry": "2.175.1", - "node-opcua-types": "2.175.1", + "chalk": "6.0.1", + "node-opcua-assert": "2.186.7", + "node-opcua-debug": "2.186.7", + "node-opcua-object-registry": "2.186.7", + "node-opcua-types": "2.187.9", "sterfive-bonjour-service": "1.1.4" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-service-endpoints": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-service-endpoints/-/node-opcua-service-endpoints-2.175.1.tgz", - "integrity": "sha512-j7SHDmq4e5cUY20nCy9tDa8U+rtARh9Z5FPXxcwLbdENu52h04ml8SaJgaz1Idj3/iOHB6o5rTL2BZaob3oOhg==", + "version": "2.187.9", + "resolved": "https://registry.npmjs.org/node-opcua-service-endpoints/-/node-opcua-service-endpoints-2.187.9.tgz", + "integrity": "sha512-GzEG1wu86bv0tm8CBC7FcmKkgrPoOusMepqu9dfLtvIG5IUIRnggwAGD2vnpoZAy4LmXkFxFPLxsx0snGZIMYg==", "license": "MIT", "dependencies": { - "node-opcua-types": "2.175.1" + "node-opcua-types": "2.187.9" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-service-filter": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-service-filter/-/node-opcua-service-filter-2.175.1.tgz", - "integrity": "sha512-Xw6CKS7NqbnDPG7Y9NjRV/F9b+lmMNLJ6mPyr1WZDkkYuyM+NsU0xg0GjnCG9Ro99OBgzu6IZUIRImhSr4gjYw==", - "license": "MIT", - "dependencies": { - "node-opcua-address-space-base": "2.175.1", - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-constants": "2.175.1", - "node-opcua-data-model": "2.175.1", - "node-opcua-data-value": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-extension-object": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-service-translate-browse-path": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-types": "2.175.1", - "node-opcua-variant": "2.175.1" + "version": "2.187.14", + "resolved": "https://registry.npmjs.org/node-opcua-service-filter/-/node-opcua-service-filter-2.187.14.tgz", + "integrity": "sha512-IODz8QGhnDtamhT+R79sDGh2Ngy5wN2P2ZYeMGsPYi88eY8oT5vEjXzPmyT6VGh286Ci9eSTfuoe66MNcL0x+Q==", + "license": "MIT", + "dependencies": { + "node-opcua-address-space-base": "2.187.14", + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-constants": "2.185.0", + "node-opcua-data-model": "2.187.0", + "node-opcua-data-value": "2.187.9", + "node-opcua-debug": "2.186.7", + "node-opcua-extension-object": "2.187.0", + "node-opcua-nodeid": "2.187.0", + "node-opcua-service-translate-browse-path": "2.187.9", + "node-opcua-status-code": "2.187.0", + "node-opcua-types": "2.187.9", + "node-opcua-variant": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-service-history": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-service-history/-/node-opcua-service-history-2.175.1.tgz", - "integrity": "sha512-YUfp9Z/W4/PqKUrMOIikgXYyugax8YH3NdsHQbCd+BbFlzujlaM63Qmmd7iFDW0SzSRduhMWymOi5l69mZBwGA==", + "version": "2.187.9", + "resolved": "https://registry.npmjs.org/node-opcua-service-history/-/node-opcua-service-history-2.187.9.tgz", + "integrity": "sha512-NtppwKbRwH/T6q2X4EWwkKvsi/b8sDBK0JXhRRhP980tShvvjsPZZwuyk3QlUXWdkHf3cXK3dgFGe/nY09WIAQ==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-data-value": "2.175.1", - "node-opcua-types": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-data-value": "2.187.9", + "node-opcua-types": "2.187.9" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-service-node-management": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-service-node-management/-/node-opcua-service-node-management-2.175.1.tgz", - "integrity": "sha512-y+wJlNpkbcsie4cRG7YPELUD1VIFKr/oVNPGHMM2fEnsy7inSSNz0dH9BCEu/E3MxFMq+iKWen4GUN0zSQCmJA==", + "version": "2.187.9", + "resolved": "https://registry.npmjs.org/node-opcua-service-node-management/-/node-opcua-service-node-management-2.187.9.tgz", + "integrity": "sha512-ApsFuqnqowGnFswtPKI3VqNbDH6GDlAOg1kF5wlVNe5/AxJDB6xA/U7vpuNOTrZvm1MI1GJVJhsxjEuctN/3xw==", "license": "MIT", "dependencies": { - "node-opcua-types": "2.175.1" + "node-opcua-types": "2.187.9" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-service-query": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-service-query/-/node-opcua-service-query-2.175.1.tgz", - "integrity": "sha512-Gdb1ZYwqlZfn5ssud+L9QQMMbgeBBMZOSAyKIAw4yKHem+cNejQ4Q9C5lEFve6DgSl0BVYZf2tilH5/VIXujBQ==", + "version": "2.187.9", + "resolved": "https://registry.npmjs.org/node-opcua-service-query/-/node-opcua-service-query-2.187.9.tgz", + "integrity": "sha512-LdQtzfw5X7GzQ1srNNB4NUd7/C5VvqCHiHv4unis4H7thyrQVfplXLyYUulZd1Jpe1Qf6ykd5sYNFVdbAmRUXg==", "license": "MIT", "dependencies": { - "node-opcua-types": "2.175.1" + "node-opcua-types": "2.187.9" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-service-read": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-service-read/-/node-opcua-service-read-2.175.1.tgz", - "integrity": "sha512-JzG3swpUETA4q5SdLXK7zIP7UJQnFbIz9mSXV+WkYuSNk9MvvdgIya2/VSsGZRA1SBWa3zRmLVlW+4t2/rwaXA==", + "version": "2.187.9", + "resolved": "https://registry.npmjs.org/node-opcua-service-read/-/node-opcua-service-read-2.187.9.tgz", + "integrity": "sha512-oLoJboCH/XoeO21Mgv1Km0raq/OBXnywx1BXuvBS2cDj4yKprVWWxILlKCuQqJixD6k9LcdMBdJ5go9hN1dNVQ==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-data-model": "2.175.1", - "node-opcua-data-value": "2.175.1", - "node-opcua-service-secure-channel": "2.175.1", - "node-opcua-types": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-data-model": "2.187.0", + "node-opcua-data-value": "2.187.9", + "node-opcua-service-secure-channel": "2.187.9", + "node-opcua-types": "2.187.9" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-service-register-node": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-service-register-node/-/node-opcua-service-register-node-2.175.1.tgz", - "integrity": "sha512-tMW60af3FeFkW9yzWTfBMsJSBBT06E6132PcRgvXq5pKYhCi2z0ZjJz2Tref/wRlSvIFn+i1+JsBT+rwAyfK5Q==", + "version": "2.187.9", + "resolved": "https://registry.npmjs.org/node-opcua-service-register-node/-/node-opcua-service-register-node-2.187.9.tgz", + "integrity": "sha512-UXPN6Ypqctiw5Qf6k4WpfaV26mnjvGO0MZU3TMyVVzmlnvrR7LxniiJRsJjL/jSHxCTOKig5OuXJyvohiQEM5A==", "license": "MIT", "dependencies": { - "node-opcua-types": "2.175.1" + "node-opcua-types": "2.187.9" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-service-secure-channel": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-service-secure-channel/-/node-opcua-service-secure-channel-2.175.1.tgz", - "integrity": "sha512-anECfPKt6l94xylD+GgXOYe3pF5bJ/+FBcpiBpN7tuYP60OASkJWCB5Kd3Le2T3wPmaWWBHsnmImo7RGWCMMnA==", + "version": "2.187.9", + "resolved": "https://registry.npmjs.org/node-opcua-service-secure-channel/-/node-opcua-service-secure-channel-2.187.9.tgz", + "integrity": "sha512-llgn19pPf/HNahf5DWh152FYud1PJJvMqeUAuEGzC6TXf/2QiXdBjR6j2e57Nrj5fCCApCAPmtPRe28Q3DQRkQ==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-factory": "2.175.1", - "node-opcua-types": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-factory": "2.187.0", + "node-opcua-types": "2.187.9" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-service-session": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-service-session/-/node-opcua-service-session-2.175.1.tgz", - "integrity": "sha512-9qM1FSWG1/6KuExWI/NyOej8dLo/gwf6+9JsyOl2uFdipNaeVJVhwCHkl6EHhii0lqG1D3QCtHV/VOGkiRweDQ==", + "version": "2.187.9", + "resolved": "https://registry.npmjs.org/node-opcua-service-session/-/node-opcua-service-session-2.187.9.tgz", + "integrity": "sha512-sSI7U8PSEUvsBBEH7J0DvBi5muji7Y/GYxhWSUVN9hrI14cHNmOF90Sc0wvNPPdcBQQ2GnsmFRBWHdMdSyPgBw==", "license": "MIT", "dependencies": { - "node-opcua-factory": "2.175.1", - "node-opcua-types": "2.175.1" + "node-opcua-factory": "2.187.0", + "node-opcua-types": "2.187.9" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-service-subscription": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-service-subscription/-/node-opcua-service-subscription-2.175.1.tgz", - "integrity": "sha512-fOKq90qjNiAce9j4h0jGbcwguYlVoqbjPJzNy8d2XCmOCnmlfY3SPHDjO2iSMLJkFpWzgM9Gj/hEdUnSzW1/TA==", + "version": "2.187.16", + "resolved": "https://registry.npmjs.org/node-opcua-service-subscription/-/node-opcua-service-subscription-2.187.16.tgz", + "integrity": "sha512-gM47IWfj6B5UkR2rJGfW2XMiTsrTkw44OZtHiV4SKdZ983P2zId2LfvFQ7qfea2cZH2BwWk6euYWq6i4ueUtjQ==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-types": "2.175.1", - "node-opcua-variant": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-types": "2.187.9", + "node-opcua-variant": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-service-translate-browse-path": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-service-translate-browse-path/-/node-opcua-service-translate-browse-path-2.175.1.tgz", - "integrity": "sha512-3TjSoNEusC68k4G4zjpQftYalMjkIxCbeI74iSxeADvzcSXD5OF+0y8NmEcXHJubmcQhO7gYbvxf0PznvpvsbA==", + "version": "2.187.9", + "resolved": "https://registry.npmjs.org/node-opcua-service-translate-browse-path/-/node-opcua-service-translate-browse-path-2.187.9.tgz", + "integrity": "sha512-sr5PxVtW3jUs4GtekhbCq1ONfLk+EPgkT6XswgTy2DWXQ921N4FQZXRN4z7rd0hswYcWuisPW6zPJ/Y1v7DdjQ==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-constants": "2.175.1", - "node-opcua-data-model": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-types": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-constants": "2.185.0", + "node-opcua-data-model": "2.187.0", + "node-opcua-nodeid": "2.187.0", + "node-opcua-types": "2.187.9" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-service-write": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-service-write/-/node-opcua-service-write-2.175.1.tgz", - "integrity": "sha512-M7IS2wGPVOJbjG8MadfVBtang5cOESiOlqjMItqA+bqjISIYj2jLLl4ufIstyBKuEvy1uoV4pgbPaoDLdwrTlA==", + "version": "2.187.9", + "resolved": "https://registry.npmjs.org/node-opcua-service-write/-/node-opcua-service-write-2.187.9.tgz", + "integrity": "sha512-pPJbVXPVpjTdns3+DBapi0La3ApNgWyBzIyH4gcMDSk68oe+k0+W5V+RZ8VOxDtocKtQeacHLlXBGVguXQfbWA==", "license": "MIT", "dependencies": { - "node-opcua-types": "2.175.1" + "node-opcua-types": "2.187.9" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-status-code": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-status-code/-/node-opcua-status-code-2.175.1.tgz", - "integrity": "sha512-2+kDiVBIz/8Idzf3MohENlGPuenjoQGQsEKudqB1EMFIhVsUvGHTR6gumn3M7PucOb+zmxUGFBt8aDfioDWqLQ==", + "version": "2.187.0", + "resolved": "https://registry.npmjs.org/node-opcua-status-code/-/node-opcua-status-code-2.187.0.tgz", + "integrity": "sha512-W8RQeeiR7qHk2n0yHmD6kVtyFnv0rEzhMp7yEQfHROE3KQ4Gg3Nsn0lahwQBQ4QZ6w9EjhlImpJ+poyNMThRhg==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-binary-stream": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-binary-stream": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-transport": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-transport/-/node-opcua-transport-2.175.1.tgz", - "integrity": "sha512-hy3BvjYmQ1WSoTzRPAGvo0wOzPTadgS1QBmSKDaj7EPgptyhcRUVYlSQ0PhtLxUfIN+yvyCNi+X+sd4P//ZN9w==", + "version": "2.187.8", + "resolved": "https://registry.npmjs.org/node-opcua-transport/-/node-opcua-transport-2.187.8.tgz", + "integrity": "sha512-fnrBQHENd/hnB4HinBwpeHHJQuQks4jRaSA23JFXlCdKIhguCFO2M3m91maPk64ldXQKa949ZdyHdg6tFpELfQ==", "license": "MIT", "dependencies": { - "chalk": "4.1.2", - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-buffer-utils": "2.175.1", - "node-opcua-chunkmanager": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-factory": "2.175.1", - "node-opcua-object-registry": "2.175.1", - "node-opcua-packet-assembler": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-utils": "2.175.1" + "chalk": "6.0.1", + "node-opcua-basic-types": "2.187.0", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-buffer-utils": "2.187.0", + "node-opcua-chunkmanager": "2.187.8", + "node-opcua-debug": "2.186.7", + "node-opcua-factory": "2.187.0", + "node-opcua-object-registry": "2.186.7", + "node-opcua-packet-assembler": "2.187.0", + "node-opcua-status-code": "2.187.0", + "node-opcua-utils": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-types": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-types/-/node-opcua-types-2.175.1.tgz", - "integrity": "sha512-ONdJ5LGqKTHaRWGsqHgzpcA3lK/YaHOKf4N9x+lheERZAuYUtAZ0GGqRH4fk+OlZV9oLEtSTx2MsR7rp6FaSYw==", + "version": "2.187.9", + "resolved": "https://registry.npmjs.org/node-opcua-types/-/node-opcua-types-2.187.9.tgz", + "integrity": "sha512-Kf8uEa+9lkraLfgh3WznCKuPEGXcvdZa1GTlT+DHUmkSi72aWPpmg+X2CFjfsNHDXHkQZz7fCeeNz4ojEezUPg==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-data-model": "2.175.1", - "node-opcua-data-value": "2.175.1", - "node-opcua-enum": "2.175.1", - "node-opcua-extension-object": "2.175.1", - "node-opcua-factory": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-numeric-range": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-variant": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-data-model": "2.187.0", + "node-opcua-data-value": "2.187.9", + "node-opcua-enum": "2.187.0", + "node-opcua-extension-object": "2.187.0", + "node-opcua-factory": "2.187.0", + "node-opcua-nodeid": "2.187.0", + "node-opcua-numeric-range": "2.187.0", + "node-opcua-status-code": "2.187.0", + "node-opcua-variant": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" + } + }, + "node_modules/node-opcua-uanodeset-json": { + "version": "2.187.16", + "resolved": "https://registry.npmjs.org/node-opcua-uanodeset-json/-/node-opcua-uanodeset-json-2.187.16.tgz", + "integrity": "sha512-scZYO1TC2wYumeULEXUlOXzJz89oXigIyAD/P3MHGuNhkhhZfpC57GPTb2ywAtkJ5Jkw4pY2isoxz+iyfa06FA==", + "license": "MIT", + "dependencies": { + "node-opcua-address-space": "2.187.16", + "node-opcua-basic-types": "2.187.0", + "node-opcua-data-model": "2.187.0", + "node-opcua-date-time": "2.187.0", + "node-opcua-extension-object": "2.187.0", + "node-opcua-factory": "2.187.0", + "node-opcua-json": "2.187.16", + "node-opcua-nodeid": "2.187.0", + "node-opcua-utils": "2.187.0", + "node-opcua-variant": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-utils": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-utils/-/node-opcua-utils-2.175.1.tgz", - "integrity": "sha512-10NAnKsRN2hrMg4dy4hFunx4eUfP1YnW84SFY7gD39piHPENdwDL83rCaYfnD02TrZOF1noWV6gLbMw2xKOJzg==", + "version": "2.187.0", + "resolved": "https://registry.npmjs.org/node-opcua-utils/-/node-opcua-utils-2.187.0.tgz", + "integrity": "sha512-wybTo6+jinaMjZQply2kblDIMRrYbxHNjPQM5EEB5EFUmQuHSYVZvvcwOtrAqqMFLFfINR8QIrN3p+2O50NBHQ==", "license": "MIT", "dependencies": { - "chalk": "4.1.2", - "node-opcua-assert": "2.175.1" + "node-opcua-assert": "2.186.7" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-variant": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-variant/-/node-opcua-variant-2.175.1.tgz", - "integrity": "sha512-UgIA8n+BptK7GzispdKrxumKE/qSV3IgpoxkzVgx8qrXCfYH6No2/1HR0gaO5oAj679hsrpC1WFn8bijvNRmdg==", + "version": "2.187.0", + "resolved": "https://registry.npmjs.org/node-opcua-variant/-/node-opcua-variant-2.187.0.tgz", + "integrity": "sha512-usMU7LWGKIiuddE85oERMY8es51NJwPPWWA9ORJlQTzIQAlxB38kNyFbWkW9vd2MqmaBM/GiAcVfhxWfPTuE7Q==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-basic-types": "2.175.1", - "node-opcua-binary-stream": "2.175.1", - "node-opcua-data-model": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-enum": "2.175.1", - "node-opcua-factory": "2.175.1", - "node-opcua-nodeid": "2.175.1", - "node-opcua-utils": "2.175.1" + "node-opcua-assert": "2.186.7", + "node-opcua-basic-types": "2.187.0", + "node-opcua-binary-stream": "2.187.0", + "node-opcua-data-model": "2.187.0", + "node-opcua-debug": "2.186.7", + "node-opcua-enum": "2.187.0", + "node-opcua-extension-object": "2.187.0", + "node-opcua-factory": "2.187.0", + "node-opcua-nodeid": "2.187.0", + "node-opcua-utils": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-vendor-diagnostic": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-vendor-diagnostic/-/node-opcua-vendor-diagnostic-2.175.1.tgz", - "integrity": "sha512-FAPYgkt/3REq5P+YBZerY3zcIdtB4YWClmfzGqNTo6Qbteqtje11jhSeIATtL0tiPoM+5raO87I+AZ/isktqiw==", + "version": "2.187.16", + "resolved": "https://registry.npmjs.org/node-opcua-vendor-diagnostic/-/node-opcua-vendor-diagnostic-2.187.16.tgz", + "integrity": "sha512-x6vsZGcO+EfBMPx/Q1ejYI+RtcOk+SnmI4++2s1nnu9C47LqMfd2aXqqWK7jmNv5JH4lXB3/4bch01Vxq1lRaQ==", "license": "MIT", "dependencies": { "humanize": "0.0.9", - "node-opcua-address-space": "2.175.1", - "node-opcua-assert": "2.175.1", - "node-opcua-constants": "2.175.1", - "node-opcua-debug": "2.175.1", - "node-opcua-server": "2.175.1", - "node-opcua-status-code": "2.175.1", - "node-opcua-variant": "2.175.1" + "node-opcua-address-space": "2.187.16", + "node-opcua-assert": "2.186.7", + "node-opcua-constants": "2.185.0", + "node-opcua-debug": "2.186.7", + "node-opcua-server": "2.187.16", + "node-opcua-status-code": "2.187.0", + "node-opcua-variant": "2.187.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/node-opcua-xml2json": { - "version": "2.175.1", - "resolved": "https://registry.npmjs.org/node-opcua-xml2json/-/node-opcua-xml2json-2.175.1.tgz", - "integrity": "sha512-EBYg27WlNS2LqjVE2ojOngFDKnZ2/mXpuzBH3GJA3y9noI3M3pbfsJpsNyJ773//0vSO0gYZcqCSG1ApSPlXZw==", + "version": "2.187.0", + "resolved": "https://registry.npmjs.org/node-opcua-xml2json/-/node-opcua-xml2json-2.187.0.tgz", + "integrity": "sha512-CD2OBsa8rj1X6zC0Wcjw7kbBg1UetqeGaYg1cmpQV2sAntodiJx6UV1GyDFuW0olst6iglHV57F3NYI2cnldBg==", "license": "MIT", "dependencies": { - "node-opcua-assert": "2.175.1", - "node-opcua-utils": "2.175.1", + "node-opcua-assert": "2.186.7", + "node-opcua-utils": "2.187.0", "xml-writer": "^1.7.0" + }, + "engines": { + "node": ">=22.13.0" } }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/obug": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz", - "integrity": "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/obug/-/obug-3.0.0.tgz", + "integrity": "sha512-5vvB5+W7ePv+p3uqxi+RcW1XAzLW0/hxt3/4X4Lc4qHudzOhmBiBwOY6DRob4WnanAEGvNcLjF+KNOufrUoEQw==", "dev": true, "funding": [ "https://github.com/sponsors/sxzz", @@ -5418,6 +5845,22 @@ "node": ">=14.0.0" } }, + "node_modules/on-finished": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.2.tgz", + "integrity": "sha512-ATWUv387i+nLD49EiDoOft5scf32Vsdz3ktrQJG9bi7jRFmaXTssvyvj1EmeKVVgvesbqUtvQQvaS2TpTukAZQ==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5427,56 +5870,28 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-function": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/openapi-types": { "version": "12.1.3", "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", "license": "MIT" }, - "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==", + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": ">= 0.8" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/path-scurry": { @@ -5495,22 +5910,21 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/path-to-regexp": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/pathe": { "version": "2.0.3", "dev": true, "license": "MIT" }, - "node_modules/peek-stream": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz", - "integrity": "sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==", - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "duplexify": "^3.5.0", - "through2": "^2.0.3" - } - }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -5519,12 +5933,13 @@ }, "node_modules/picocolors": { "version": "1.1.1", + "dev": true, "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", "dev": true, "license": "MIT", "engines": { @@ -5575,6 +5990,15 @@ "node": ">= 6" } }, + "node_modules/pkce-challenge": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", + "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", + "license": "MIT", + "engines": { + "node": ">=16.20.0" + } + }, "node_modules/pkg-types": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", @@ -5588,9 +6012,9 @@ } }, "node_modules/postcss": { - "version": "8.5.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.19.tgz", - "integrity": "sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ==", + "version": "8.5.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.31.tgz", + "integrity": "sha512-YUbWYCgErwnMAVkjUnYa+KlMBzGpHwiIt/DE7f0G33AuX2LH9UcTk6KgWxd3zRU+pN3u/C+Xl3EnMLM4Hea7Sg==", "dev": true, "funding": [ { @@ -5607,10 +6031,11 @@ } ], "license": "MIT", + "peer": true, "dependencies": { - "nanoid": "^3.3.12", + "nanoid": "^3.3.20", "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" + "source-map-js": "^1.2.2" }, "engines": { "node": "^10 || ^12 || >=14" @@ -5667,23 +6092,10 @@ "node": ">= 0.6" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "license": "MIT" - }, "node_modules/process-warning": { - "version": "5.0.0", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.1.1.tgz", + "integrity": "sha512-oCkNVj4OKnKEcocVBcDfiIugN1/cE6rgfT3nCtzeqZPA8+rIxMaQ0xXzIkGP8Gj2qUaP1UR7uhJ1VD8lUCpzCg==", "funding": [ { "type": "github", @@ -5696,6 +6108,32 @@ ], "license": "MIT" }, + "node_modules/proxy-addr": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.8.tgz", + "integrity": "sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/pvtsutils": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", @@ -5706,36 +6144,66 @@ } }, "node_modules/pvutils": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz", - "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.2.0.tgz", + "integrity": "sha512-BbubeCEyTuQjVMakvJQ/Sxbc93F2pwmbsxONT/ZRrwU7Ua38d8unYTwXpTVLAKJ4BDuH9IGztCjQcd/N/39Dvg==", "license": "MIT", "engines": { "node": ">=16.0.0" } }, + "node_modules/qs": { + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.1.tgz", + "integrity": "sha512-5Px6J7rfHBAGUhNQ3es4YzcOdBBw0SDcVtThJml4RdnKw4tKs2epA0kPZ+K8X+WiHktT93RHVcQ/3ym5aTCgtg==", + "license": "BSD-3-Clause", + "dependencies": { + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/quick-format-unescaped": { "version": "4.0.4", "license": "MIT" }, - "node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "node_modules/range-parser": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.3.0.tgz", + "integrity": "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.10" } }, "node_modules/readdirp": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "license": "MIT", "engines": { "node": ">= 14.18.0" @@ -5775,23 +6243,6 @@ "node": ">=8" } }, - "node_modules/restore-cursor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ret": { "version": "0.5.0", "license": "MIT", @@ -5812,13 +6263,14 @@ "license": "MIT" }, "node_modules/rolldown": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.5.tgz", - "integrity": "sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.15.tgz", + "integrity": "sha512-6odND+fel5zVw3I4Yc2e69gvguDnX0CAAGiNDZSq4ik5WUcaLrkD2GLuog0XcODbor31hZ5ayEMgVDno+KPV5g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@oxc-project/types": "=0.139.0", + "@oxc-project/types": "=0.155.0", "@rolldown/pluginutils": "^1.0.0" }, "bin": { @@ -5828,25 +6280,27 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.1.5", - "@rolldown/binding-darwin-arm64": "1.1.5", - "@rolldown/binding-darwin-x64": "1.1.5", - "@rolldown/binding-freebsd-x64": "1.1.5", - "@rolldown/binding-linux-arm-gnueabihf": "1.1.5", - "@rolldown/binding-linux-arm64-gnu": "1.1.5", - "@rolldown/binding-linux-arm64-musl": "1.1.5", - "@rolldown/binding-linux-ppc64-gnu": "1.1.5", - "@rolldown/binding-linux-s390x-gnu": "1.1.5", - "@rolldown/binding-linux-x64-gnu": "1.1.5", - "@rolldown/binding-linux-x64-musl": "1.1.5", - "@rolldown/binding-openharmony-arm64": "1.1.5", - "@rolldown/binding-wasm32-wasi": "1.1.5", - "@rolldown/binding-win32-arm64-msvc": "1.1.5", - "@rolldown/binding-win32-x64-msvc": "1.1.5" + "@rolldown/binding-android-arm-eabi": "1.2.15", + "@rolldown/binding-android-arm64": "1.2.15", + "@rolldown/binding-darwin-arm64": "1.2.15", + "@rolldown/binding-darwin-x64": "1.2.15", + "@rolldown/binding-freebsd-x64": "1.2.15", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.15", + "@rolldown/binding-linux-arm64-gnu": "1.2.15", + "@rolldown/binding-linux-arm64-musl": "1.2.15", + "@rolldown/binding-linux-ppc64-gnu": "1.2.15", + "@rolldown/binding-linux-s390x-gnu": "1.2.15", + "@rolldown/binding-linux-x64-gnu": "1.2.15", + "@rolldown/binding-linux-x64-musl": "1.2.15", + "@rolldown/binding-openharmony-arm64": "1.2.15", + "@rolldown/binding-win32-arm64-msvc": "1.2.15", + "@rolldown/binding-win32-x64-msvc": "1.2.15" } }, "node_modules/rollup": { - "version": "4.61.1", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.65.0.tgz", + "integrity": "sha512-QVCvQUTGDN6JRwi3jVGCY3H4aTHvi9rX0LyoBMkGUvdh/Z6O51CzcLz85BWZaTCDGhl6ySGqYZs+xI1jmPqGcw==", "dev": true, "license": "MIT", "dependencies": { @@ -5860,53 +6314,50 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.61.1", - "@rollup/rollup-android-arm64": "4.61.1", - "@rollup/rollup-darwin-arm64": "4.61.1", - "@rollup/rollup-darwin-x64": "4.61.1", - "@rollup/rollup-freebsd-arm64": "4.61.1", - "@rollup/rollup-freebsd-x64": "4.61.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.61.1", - "@rollup/rollup-linux-arm-musleabihf": "4.61.1", - "@rollup/rollup-linux-arm64-gnu": "4.61.1", - "@rollup/rollup-linux-arm64-musl": "4.61.1", - "@rollup/rollup-linux-loong64-gnu": "4.61.1", - "@rollup/rollup-linux-loong64-musl": "4.61.1", - "@rollup/rollup-linux-ppc64-gnu": "4.61.1", - "@rollup/rollup-linux-ppc64-musl": "4.61.1", - "@rollup/rollup-linux-riscv64-gnu": "4.61.1", - "@rollup/rollup-linux-riscv64-musl": "4.61.1", - "@rollup/rollup-linux-s390x-gnu": "4.61.1", - "@rollup/rollup-linux-x64-gnu": "4.61.1", - "@rollup/rollup-linux-x64-musl": "4.61.1", - "@rollup/rollup-openbsd-x64": "4.61.1", - "@rollup/rollup-openharmony-arm64": "4.61.1", - "@rollup/rollup-win32-arm64-msvc": "4.61.1", - "@rollup/rollup-win32-ia32-msvc": "4.61.1", - "@rollup/rollup-win32-x64-gnu": "4.61.1", - "@rollup/rollup-win32-x64-msvc": "4.61.1", + "@napi-rs/lzma-linux-x64-gnu": "1.5.1", + "@rollup/rollup-android-arm-eabi": "4.65.0", + "@rollup/rollup-android-arm64": "4.65.0", + "@rollup/rollup-darwin-arm64": "4.65.0", + "@rollup/rollup-darwin-x64": "4.65.0", + "@rollup/rollup-freebsd-arm64": "4.65.0", + "@rollup/rollup-freebsd-x64": "4.65.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.65.0", + "@rollup/rollup-linux-arm-musleabihf": "4.65.0", + "@rollup/rollup-linux-arm64-gnu": "4.65.0", + "@rollup/rollup-linux-arm64-musl": "4.65.0", + "@rollup/rollup-linux-loong64-gnu": "4.65.0", + "@rollup/rollup-linux-loong64-musl": "4.65.0", + "@rollup/rollup-linux-ppc64-gnu": "4.65.0", + "@rollup/rollup-linux-ppc64-musl": "4.65.0", + "@rollup/rollup-linux-riscv64-gnu": "4.65.0", + "@rollup/rollup-linux-riscv64-musl": "4.65.0", + "@rollup/rollup-linux-s390x-gnu": "4.65.0", + "@rollup/rollup-linux-x64-gnu": "4.65.0", + "@rollup/rollup-linux-x64-musl": "4.65.0", + "@rollup/rollup-openbsd-x64": "4.65.0", + "@rollup/rollup-openharmony-arm64": "4.65.0", + "@rollup/rollup-win32-arm64-msvc": "4.65.0", + "@rollup/rollup-win32-ia32-msvc": "4.65.0", + "@rollup/rollup-win32-x64-gnu": "4.65.0", + "@rollup/rollup-win32-x64-msvc": "4.65.0", "fsevents": "~2.3.2" } }, - "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==", - "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" + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } }, "node_modules/safe-regex2": { "version": "5.1.1", @@ -5967,6 +6418,51 @@ "node": ">=10" } }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/set-cookie-parser": { "version": "2.7.2", "license": "MIT" @@ -5977,75 +6473,110 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "license": "ISC" }, - "node_modules/siginfo": { + "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "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/slice-ansi": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", - "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", - "dev": true, + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "license": "MIT", "dependencies": { - "ansi-styles": "^6.2.3", - "is-fullwidth-code-point": "^5.1.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=8" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sonic-boom": { - "version": "4.2.1", + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "license": "MIT", "dependencies": { - "atomic-sleep": "^1.0.0" + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "dev": true, - "license": "BSD-3-Clause", + "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==", + "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": ">= 12" + "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==", + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sonic-boom": { + "version": "4.2.1", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" } }, "node_modules/source-map-js": { - "version": "1.2.1", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz", + "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -6084,13 +6615,6 @@ "node": ">=0.10.0" } }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true, - "license": "MIT" - }, "node_modules/statuses": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", @@ -6101,9 +6625,9 @@ } }, "node_modules/std-env": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.2.0.tgz", - "integrity": "sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.3.0.tgz", + "integrity": "sha512-OtU/EgQ1kIm5KwqQpBC6ZEMXrZRui11w8zgfTWp8cdO9B8OaPsbA8bTHO2P+HNo1VlUTGMVBwPhydu6poeXiag==", "dev": true, "license": "MIT" }, @@ -6120,21 +6644,6 @@ "multicast-dns": "^7.2.4" } }, - "node_modules/stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "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==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/string-argv": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", @@ -6145,39 +6654,6 @@ "node": ">=0.6.19" } }, - "node_modules/string-width": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz", - "integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.5.0", - "strip-ansi": "^7.1.2" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/sucrase": { "version": "3.35.1", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", @@ -6203,6 +6679,8 @@ }, "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==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -6267,46 +6745,6 @@ "version": "1.0.0", "license": "MIT" }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "license": "MIT", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/through2/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/through2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -6314,16 +6752,24 @@ "license": "MIT" }, "node_modules/tinybench": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-6.2.2.tgz", + "integrity": "sha512-nIZ2N2dFpjBsg2hgitKu7mA+FvsIJuGJOwysRngmVRRmWgR/UyPjwJj8c/fT/dhm8EkHnF5EOogRf+0Z2qrimA==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } }, "node_modules/tinyexec": { - "version": "0.3.2", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.1.tgz", + "integrity": "sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/tinyglobby": { "version": "0.2.17", @@ -6341,9 +6787,9 @@ } }, "node_modules/tinyrainbow": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", - "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.2.0.tgz", + "integrity": "sha512-LgO3D9yZJjApUiuUfl9iFAwrtaX4+lok3wJIqttGoKCHlWUqHqbQpnxCf82L8FjgKsh4iGo78hqJwgL8F6To2A==", "dev": true, "license": "MIT", "engines": { @@ -6368,601 +6814,127 @@ }, "node_modules/tree-kill": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "license": "MIT", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, - "node_modules/tsup": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.5.1.tgz", - "integrity": "sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==", - "dev": true, - "license": "MIT", - "dependencies": { - "bundle-require": "^5.1.0", - "cac": "^6.7.14", - "chokidar": "^4.0.3", - "consola": "^3.4.0", - "debug": "^4.4.0", - "esbuild": "^0.27.0", - "fix-dts-default-cjs-exports": "^1.0.0", - "joycon": "^3.1.1", - "picocolors": "^1.1.1", - "postcss-load-config": "^6.0.1", - "resolve-from": "^5.0.0", - "rollup": "^4.34.8", - "source-map": "^0.7.6", - "sucrase": "^3.35.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.11", - "tree-kill": "^1.2.2" - }, - "bin": { - "tsup": "dist/cli-default.js", - "tsup-node": "dist/cli-node.js" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@microsoft/api-extractor": "^7.36.0", - "@swc/core": "^1", - "postcss": "^8.4.12", - "typescript": ">=4.5.0" - }, - "peerDependenciesMeta": { - "@microsoft/api-extractor": { - "optional": true - }, - "@swc/core": { - "optional": true - }, - "postcss": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/tsx": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.23.1.tgz", - "integrity": "sha512-GQHnkIfxyx1wYCOS/wonik5MVRZU9hi1TEZmzGZSCJB1y9YgoZ8H6itNE/u4suE+yLmOzuE4E5S4TZ/ZX2wcWQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "~0.28.0" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.0.tgz", - "integrity": "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-arm": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.0.tgz", - "integrity": "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.0.tgz", - "integrity": "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.0.tgz", - "integrity": "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.0.tgz", - "integrity": "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/darwin-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.0.tgz", - "integrity": "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.0.tgz", - "integrity": "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.0.tgz", - "integrity": "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-arm": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.0.tgz", - "integrity": "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.0.tgz", - "integrity": "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-ia32": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.0.tgz", - "integrity": "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-loong64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.0.tgz", - "integrity": "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.0.tgz", - "integrity": "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.0.tgz", - "integrity": "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.0.tgz", - "integrity": "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-s390x": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.0.tgz", - "integrity": "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.0.tgz", - "integrity": "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/netbsd-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.0.tgz", - "integrity": "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.0.tgz", - "integrity": "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/openbsd-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.0.tgz", - "integrity": "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.0.tgz", - "integrity": "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/openharmony-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.0.tgz", - "integrity": "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/sunos-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.0.tgz", - "integrity": "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==", - "cpu": [ - "x64" - ], + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "peer": true, - "engines": { - "node": ">=18" + "bin": { + "tree-kill": "cli.js" } }, - "node_modules/tsx/node_modules/@esbuild/win32-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.0.tgz", - "integrity": "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==", - "cpu": [ - "arm64" - ], + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsup": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-9.0.0.tgz", + "integrity": "sha512-DHgb0bfo2gFKybOa8dRFMiHSqzWWhMkfNK0f902VVquWQtDBWExNgidHszjjDKaFd12pWPgzumpWf9nGr3gzFg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, + "dependencies": { + "bundle-require": "^5.1.0", + "cac": "^7.1.0", + "chokidar": "^5.0.0", + "consola": "^3.4.2", + "esbuild": "^0.28.2", + "fix-dts-default-cjs-exports": "^1.0.1", + "joycon": "^3.1.1", + "obug": "^3.0.0", + "picocolors": "^1.1.1", + "postcss-load-config": "^6.0.1", + "resolve-from": "^5.0.0", + "rollup": "^4.64.6", + "source-map-js": "^1.2.2", + "sucrase": "^3.35.1", + "tinyexec": "^1.3.1", + "tinyglobby": "^0.2.17", + "tree-kill": "^1.2.2" + }, + "bin": { + "tsup": "dist/cli-default.js", + "tsup-node": "dist/cli-node.js" + }, "engines": { - "node": ">=18" + "node": "^22.18.0 || ^24.11.0 || >=26.0.0" + }, + "peerDependencies": { + "@microsoft/api-extractor": "^7.36.0", + "@swc/core": "^1", + "postcss": "^8.4.12", + "typescript": ">=4.5.0" + }, + "peerDependenciesMeta": { + "@microsoft/api-extractor": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "postcss": { + "optional": true + }, + "typescript": { + "optional": true + } } }, - "node_modules/tsx/node_modules/@esbuild/win32-ia32": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.0.tgz", - "integrity": "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==", - "cpu": [ - "ia32" - ], + "node_modules/tsup/node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, + "dependencies": { + "readdirp": "^5.0.0" + }, "engines": { - "node": ">=18" + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/tsx/node_modules/@esbuild/win32-x64": { - "version": "0.28.0", - "cpu": [ - "x64" - ], + "node_modules/tsup/node_modules/readdirp": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", + "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, "engines": { - "node": ">=18" + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/tsx/node_modules/esbuild": { - "version": "0.28.0", + "node_modules/tsx": { + "version": "4.23.15", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.23.15.tgz", + "integrity": "sha512-Yiex1Ovn8z2xPpOWckIiysV1SSyRMY9BkLF++q0yKiDxCqRhosKfMg3janKkiLBwZ5c/YryloKwGZcrEmtwxKw==", "dev": true, - "hasInstallScript": true, "license": "MIT", + "dependencies": { + "esbuild": "~0.28.0" + }, "bin": { - "esbuild": "bin/esbuild" + "tsx": "dist/cli.mjs" }, "engines": { - "node": ">=18" + "node": ">=18.0.0" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.0", - "@esbuild/android-arm": "0.28.0", - "@esbuild/android-arm64": "0.28.0", - "@esbuild/android-x64": "0.28.0", - "@esbuild/darwin-arm64": "0.28.0", - "@esbuild/darwin-x64": "0.28.0", - "@esbuild/freebsd-arm64": "0.28.0", - "@esbuild/freebsd-x64": "0.28.0", - "@esbuild/linux-arm": "0.28.0", - "@esbuild/linux-arm64": "0.28.0", - "@esbuild/linux-ia32": "0.28.0", - "@esbuild/linux-loong64": "0.28.0", - "@esbuild/linux-mips64el": "0.28.0", - "@esbuild/linux-ppc64": "0.28.0", - "@esbuild/linux-riscv64": "0.28.0", - "@esbuild/linux-s390x": "0.28.0", - "@esbuild/linux-x64": "0.28.0", - "@esbuild/netbsd-arm64": "0.28.0", - "@esbuild/netbsd-x64": "0.28.0", - "@esbuild/openbsd-arm64": "0.28.0", - "@esbuild/openbsd-x64": "0.28.0", - "@esbuild/openharmony-arm64": "0.28.0", - "@esbuild/sunos-x64": "0.28.0", - "@esbuild/win32-arm64": "0.28.0", - "@esbuild/win32-ia32": "0.28.0", - "@esbuild/win32-x64": "0.28.0" + "fsevents": "~2.3.3" } }, "node_modules/tsyringe": { @@ -6984,21 +6956,21 @@ "license": "0BSD" }, "node_modules/turbo": { - "version": "2.10.4", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.10.4.tgz", - "integrity": "sha512-GQpduILaKjoaGljw097ScsSyKTtZSY7cZ3bJktzfTkPMyCf3ShKLuXK2IaOEN2Plziml+ArR7WJ1m+V4VbnaKQ==", + "version": "2.11.10", + "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.11.10.tgz", + "integrity": "sha512-3GJYwig8ygEI89oaOZdduJX8/aw6O9eRPYHoIt6T3FZl9hkKjiyIspufJoVgqXihPoJu8M5CSV0DlZvzfohBCw==", "dev": true, "license": "MIT", "bin": { "turbo": "bin/turbo" }, "optionalDependencies": { - "@turbo/darwin-64": "2.10.4", - "@turbo/darwin-arm64": "2.10.4", - "@turbo/linux-64": "2.10.4", - "@turbo/linux-arm64": "2.10.4", - "@turbo/windows-64": "2.10.4", - "@turbo/windows-arm64": "2.10.4" + "@turbo/darwin-64": "2.11.10", + "@turbo/darwin-arm64": "2.11.10", + "@turbo/linux-64": "2.11.10", + "@turbo/linux-arm64": "2.11.10", + "@turbo/windows-64": "2.11.10", + "@turbo/windows-arm64": "2.11.10" } }, "node_modules/tweetnacl": { @@ -7007,11 +6979,42 @@ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "license": "Unlicense" }, + "node_modules/type-is": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz", + "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==", + "license": "MIT", + "dependencies": { + "content-type": "^2.0.0", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/type-is/node_modules/content-type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/typescript": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -7038,28 +7041,41 @@ "license": "MIT" }, "node_modules/undici-types": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", - "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz", + "integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==", "license": "MIT" }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, "node_modules/vite": { - "version": "8.1.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.4.tgz", - "integrity": "sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.5.tgz", + "integrity": "sha512-z1YpjieJ9g0ebTmQpLBv/oq9E3F9EIlOe+7LahW8SrE3LTiG3udBRUXQOlYXP9b+IC2q2phHeVxj9xGlw34OEQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "lightningcss": "^1.32.0", - "picomatch": "^4.0.5", - "postcss": "^8.5.16", - "rolldown": "~1.1.4", + "lightningcss": "^1.33.0", + "picomatch": "^4.0.7", + "postcss": "^8.5.30", + "rolldown": "~1.2.14", "tinyglobby": "^0.2.17" }, "bin": { @@ -7076,7 +7092,7 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.3.0", + "@vitejs/devtools": "^0.7.1 || ^0.8.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", @@ -7128,38 +7144,31 @@ } }, "node_modules/vitest": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.10.tgz", - "integrity": "sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/expect": "4.1.10", - "@vitest/mocker": "4.1.10", - "@vitest/pretty-format": "4.1.10", - "@vitest/runner": "4.1.10", - "@vitest/snapshot": "4.1.10", - "@vitest/spy": "4.1.10", - "@vitest/utils": "4.1.10", - "es-module-lexer": "^2.0.0", - "expect-type": "^1.3.0", - "magic-string": "^0.30.21", - "obug": "^2.1.1", - "pathe": "^2.0.3", - "picomatch": "^4.0.3", - "std-env": "^4.0.0-rc.1", - "tinybench": "^2.9.0", - "tinyexec": "^1.0.2", - "tinyglobby": "^0.2.15", - "tinyrainbow": "^3.1.0", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", - "why-is-node-running": "^2.3.0" + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-5.0.5.tgz", + "integrity": "sha512-cPODOMF8YnkiiYtDdHo6n4wWmBrOBBbOIYH2d33M4l3CdNn72h+qMmO6uXffUN6A5AZFXNND/d+krS9mgkXRfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/mocker": "5.0.5", + "chai": "^6.3.0", + "es-module-lexer": "^2.3.2", + "expect-type": "^1.4.0", + "magic-string": "^1.4.3", + "obug": "^3.0.0", + "picomatch": "^4.0.7", + "std-env": "^4.3.0", + "tinybench": "^6.2.2", + "tinyexec": "^1.3.1", + "tinyglobby": "^0.2.17", + "why-is-node-running": "3.2.1" }, "bin": { "vitest": "vitest.mjs" }, "engines": { - "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^22.12.0 || ^24.0.0 || >=26.0.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -7167,16 +7176,16 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", - "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.10", - "@vitest/browser-preview": "4.1.10", - "@vitest/browser-webdriverio": "4.1.10", - "@vitest/coverage-istanbul": "4.1.10", - "@vitest/coverage-v8": "4.1.10", - "@vitest/ui": "4.1.10", + "@types/node": "^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "5.0.5", + "@vitest/browser-preview": "5.0.5", + "@vitest/browser-webdriverio": "^5.0.0-beta.5 || >=5.0.0", + "@vitest/coverage-istanbul": "5.0.5", + "@vitest/coverage-v8": "5.0.5", + "@vitest/ui": "5.0.5", "happy-dom": "*", "jsdom": "*", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + "vite": "^6.4.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "@edge-runtime/vm": { @@ -7217,14 +7226,14 @@ } } }, - "node_modules/vitest/node_modules/tinyexec": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz", - "integrity": "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==", + "node_modules/vitest/node_modules/magic-string": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.4.3.tgz", + "integrity": "sha512-z12OxmaPGE0F4xlpGdjuAUckipLpQlTAuAmyGhNoD7ODpYUzvDfvtxUbjM/jwznyP178oju/KDdyi220wNJ0RQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.6.0" } }, "node_modules/webcrypto-core": { @@ -7240,21 +7249,32 @@ "tslib": "^2.8.1" } }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/why-is-node-running": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-3.2.1.tgz", + "integrity": "sha512-Tb2FUhB4vUsGQlfSquQLYkApkuPAFQXGFzxWKHHumVz2dK+X1RUm/HnID4+TfIGYJ1kTcwOaCk/buYCEJr6YjQ==", "dev": true, "license": "MIT", - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, "bin": { "why-is-node-running": "cli.js" }, "engines": { - "node": ">=8" + "node": ">=20.11" } }, "node_modules/wordwrapjs": { @@ -7266,37 +7286,6 @@ "node": ">=12.17" } }, - "node_modules/wrap-ansi": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-10.0.0.tgz", - "integrity": "sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.3", - "string-width": "^8.2.0", - "strip-ansi": "^7.1.2" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -7310,19 +7299,10 @@ "node": ">=0.4.0" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, "node_modules/yaml": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", - "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.1.tgz", + "integrity": "sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==", "license": "ISC", "bin": { "yaml": "bin.mjs" @@ -7346,43 +7326,61 @@ "node": ">=12" } }, + "node_modules/zod": { + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz", + "integrity": "sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.25.2", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", + "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.25.28 || ^4" + } + }, "packages/app": { "name": "@node-i3x/app", - "version": "0.9.8", + "version": "0.10.0", "license": "AGPL-3.0-or-later OR LicenseRef-Sterfive-Commercial", "dependencies": { - "@fastify/cors": "^11.3.0", - "@node-i3x/core": "0.9.8", - "@node-i3x/opcua-connector": "0.9.8", - "@node-i3x/rest-server": "0.9.8", + "@fastify/cors": "^11.3.1", + "@node-i3x/core": "0.10.0", + "@node-i3x/opcua-connector": "0.10.0", + "@node-i3x/rest-server": "0.10.0", "commander": "^15.0.0", - "cosmiconfig": "^9.0.2", - "fastify": "^5.10.0", - "fastify-plugin": "^6.0.0", - "js-yaml": "^5.2.1", - "node-opcua": "^2.175.1", - "node-opcua-address-space": "^2.175.1", - "node-opcua-address-space-base": "^2.175.1", - "node-opcua-certificate-manager": "^2.175.1", - "node-opcua-client": "^2.175.1", - "node-opcua-constants": "^2.175.1", - "node-opcua-data-model": "^2.175.1", - "node-opcua-data-value": "^2.175.1", - "node-opcua-nodeid": "^2.175.1", - "node-opcua-pseudo-session": "^2.175.1", - "node-opcua-secure-channel": "^2.175.1", - "node-opcua-service-browse": "^2.175.1", - "node-opcua-status-code": "^2.175.1", - "node-opcua-types": "^2.175.1", - "node-opcua-variant": "^2.175.1" + "cosmiconfig": "^10.0.1", + "fastify": "^5.12.7", + "fastify-plugin": "^6.0.1", + "js-yaml": "^5.5.0", + "node-opcua": "^2.187.16", + "node-opcua-address-space": "^2.187.16", + "node-opcua-address-space-base": "^2.187.14", + "node-opcua-certificate-manager": "^2.187.16", + "node-opcua-client": "^2.187.16", + "node-opcua-constants": "^2.185.0", + "node-opcua-data-model": "^2.187.0", + "node-opcua-data-value": "^2.187.9", + "node-opcua-nodeid": "^2.187.0", + "node-opcua-pseudo-session": "^2.187.16", + "node-opcua-secure-channel": "^2.187.16", + "node-opcua-service-browse": "^2.187.9", + "node-opcua-status-code": "^2.187.0", + "node-opcua-types": "^2.187.9", + "node-opcua-variant": "^2.187.0" }, "bin": { "i3x": "dist/cli.js" }, "devDependencies": { "@types/js-yaml": "^4.0.9", - "tsup": "^8.5.1", - "tsx": "^4.23.1" + "tsup": "^9.0.0", + "tsx": "^4.23.15" } }, "packages/app/node_modules/commander": { @@ -7394,50 +7392,12 @@ "node": ">=22.12.0" } }, - "packages/app/node_modules/fastify-plugin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-6.0.0.tgz", - "integrity": "sha512-fZOty7z3O7vOliF6d8bHE3wiEh1KcNnKEQensSgTk9C1DvN6nRLS++XVd86v33Hw/8u9Un8A1zDrQ8ujcQDHEg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "packages/app/node_modules/js-yaml": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.2.1.tgz", - "integrity": "sha512-zfLtNfQqxVqq3uaTqSkh4x4hZw3KHobGUA0fJUj4wawW8bsQLTVqpHdXSIzidh7o+4lEW36tANuAGdaFx6Zgnw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/nodeca" - } - ], - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.mjs" - } - }, "packages/core": { "name": "@node-i3x/core", - "version": "0.9.8", + "version": "0.10.0", "license": "AGPL-3.0-or-later OR LicenseRef-Sterfive-Commercial", "devDependencies": { - "@types/node": "^26.1.1" + "@types/node": "^26.6.5" }, "funding": { "type": "commercial", @@ -7446,63 +7406,65 @@ }, "packages/demo-embedded": { "name": "@node-i3x/demo-embedded", - "version": "0.9.8", + "version": "0.10.0", "license": "AGPL-3.0-or-later OR LicenseRef-Sterfive-Commercial", "dependencies": { - "@fastify/cors": "^11.3.0", - "@node-i3x/core": "0.9.8", - "@node-i3x/opcua-connector": "0.9.8", - "@node-i3x/pseudo-session-connector": "0.9.8", - "@node-i3x/rest-server": "0.9.8", - "fastify": "^5.10.0", - "fastify-plugin": "^6.0.0", - "node-opcua": "^2.175.1", - "node-opcua-address-space": "^2.175.1", - "node-opcua-address-space-base": "^2.175.1", - "node-opcua-certificate-manager": "^2.175.1", - "node-opcua-client": "^2.175.1", - "node-opcua-constants": "^2.175.1", - "node-opcua-data-model": "^2.175.1", - "node-opcua-data-value": "^2.175.1", - "node-opcua-nodeid": "^2.175.1", - "node-opcua-pseudo-session": "^2.175.1", - "node-opcua-secure-channel": "^2.175.1", - "node-opcua-service-browse": "^2.175.1", - "node-opcua-status-code": "^2.175.1", - "node-opcua-types": "^2.175.1", - "node-opcua-variant": "^2.175.1" + "@fastify/cors": "^11.3.1", + "@node-i3x/core": "0.10.0", + "@node-i3x/opcua-connector": "0.10.0", + "@node-i3x/pseudo-session-connector": "0.10.0", + "@node-i3x/rest-server": "0.10.0", + "fastify": "^5.12.7", + "fastify-plugin": "^6.0.1", + "node-opcua": "^2.187.16", + "node-opcua-address-space": "^2.187.16", + "node-opcua-address-space-base": "^2.187.14", + "node-opcua-certificate-manager": "^2.187.16", + "node-opcua-client": "^2.187.16", + "node-opcua-constants": "^2.185.0", + "node-opcua-data-model": "^2.187.0", + "node-opcua-data-value": "^2.187.9", + "node-opcua-nodeid": "^2.187.0", + "node-opcua-pseudo-session": "^2.187.16", + "node-opcua-secure-channel": "^2.187.16", + "node-opcua-service-browse": "^2.187.9", + "node-opcua-status-code": "^2.187.0", + "node-opcua-types": "^2.187.9", + "node-opcua-variant": "^2.187.0" }, "bin": { "i3x-demo": "dist/index.js", "i3x-demo-client": "dist/client.js" }, "devDependencies": { - "tsup": "^8.5.1", - "tsx": "^4.23.1" + "tsup": "^9.0.0", + "tsx": "^4.23.15" } }, - "packages/demo-embedded/node_modules/fastify-plugin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-6.0.0.tgz", - "integrity": "sha512-fZOty7z3O7vOliF6d8bHE3wiEh1KcNnKEQensSgTk9C1DvN6nRLS++XVd86v33Hw/8u9Un8A1zDrQ8ujcQDHEg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" + "packages/mcp": { + "name": "@node-i3x/mcp", + "version": "0.10.0", + "license": "AGPL-3.0-or-later OR LicenseRef-Sterfive-Commercial", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.32.2", + "@node-i3x/core": "0.10.0", + "zod": "^4.6.7" + }, + "bin": { + "node-i3x-mcp": "dist/cli.js" + }, + "devDependencies": { + "@types/node": "^26.6.5", + "tsup": "^9.0.0", + "typescript": "6" + } }, "packages/opcua-connector": { "name": "@node-i3x/opcua-connector", - "version": "0.9.8", + "version": "0.10.0", "license": "AGPL-3.0-or-later OR LicenseRef-Sterfive-Commercial", "dependencies": { - "@node-i3x/core": "0.9.8" + "@node-i3x/core": "0.10.0" }, "funding": { "type": "commercial", @@ -7512,73 +7474,57 @@ "@sterfive/opcua-optimized-client": "*" }, "peerDependencies": { - "node-opcua": ">=2.175.1", - "node-opcua-certificate-manager": ">=2.175.1", - "node-opcua-client": ">=2.175.1", - "node-opcua-secure-channel": ">=2.175.1" + "node-opcua": ">=2.187.16", + "node-opcua-certificate-manager": ">=2.187.16", + "node-opcua-client": ">=2.187.16", + "node-opcua-secure-channel": ">=2.187.16" } }, "packages/pseudo-session-connector": { "name": "@node-i3x/pseudo-session-connector", - "version": "0.9.8", + "version": "0.10.0", "license": "AGPL-3.0-or-later OR LicenseRef-Sterfive-Commercial", "dependencies": { - "@node-i3x/core": "0.9.8" + "@node-i3x/core": "0.10.0" }, "devDependencies": { - "node-opcua": "^2.175.1" + "node-opcua": "^2.187.16" }, "funding": { "type": "commercial", "url": "https://sterfive.com" }, "peerDependencies": { - "node-opcua-address-space": ">=2.175.1", - "node-opcua-address-space-base": ">=2.175.1", - "node-opcua-constants": ">=2.175.1", - "node-opcua-data-model": ">=2.175.1", - "node-opcua-data-value": ">=2.175.1", - "node-opcua-nodeid": ">=2.175.1", - "node-opcua-pseudo-session": ">=2.175.1", - "node-opcua-service-browse": ">=2.175.1", - "node-opcua-status-code": ">=2.175.1", - "node-opcua-types": ">=2.175.1", - "node-opcua-variant": ">=2.175.1" + "node-opcua-address-space": ">=2.187.16", + "node-opcua-address-space-base": ">=2.187.14", + "node-opcua-constants": ">=2.185.0", + "node-opcua-data-model": ">=2.187.0", + "node-opcua-data-value": ">=2.187.9", + "node-opcua-nodeid": ">=2.187.0", + "node-opcua-pseudo-session": ">=2.187.16", + "node-opcua-service-browse": ">=2.187.9", + "node-opcua-status-code": ">=2.187.0", + "node-opcua-types": ">=2.187.9", + "node-opcua-variant": ">=2.187.0" } }, "packages/rest-server": { "name": "@node-i3x/rest-server", - "version": "0.9.8", + "version": "0.10.0", "license": "AGPL-3.0-or-later OR LicenseRef-Sterfive-Commercial", "dependencies": { - "@fastify/compress": "^9.0.0", - "@fastify/cors": "^11.3.0", - "@fastify/swagger": "^9.8.0", - "@fastify/swagger-ui": "^6.1.0", - "@node-i3x/core": "0.9.8", - "fastify": "^5.10.0", - "fastify-plugin": "^6.0.0" + "@fastify/compress": "^9.2.2", + "@fastify/cors": "^11.3.1", + "@fastify/swagger": "^9.9.2", + "@fastify/swagger-ui": "^6.1.2", + "@node-i3x/core": "0.10.0", + "fastify": "^5.12.7", + "fastify-plugin": "^6.0.1" }, "funding": { "type": "commercial", "url": "https://sterfive.com" } - }, - "packages/rest-server/node_modules/fastify-plugin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-6.0.0.tgz", - "integrity": "sha512-fZOty7z3O7vOliF6d8bHE3wiEh1KcNnKEQensSgTk9C1DvN6nRLS++XVd86v33Hw/8u9Un8A1zDrQ8ujcQDHEg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" } } } diff --git a/package.json b/package.json index 4ba3a1a..15d426d 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,8 @@ "packages/pseudo-session-connector", "packages/rest-server", "packages/app", - "packages/demo-embedded" + "packages/demo-embedded", + "packages/mcp" ], "scripts": { "consistency": "npx -y @ster5/check-version-consistency", @@ -71,15 +72,15 @@ "prepare": "husky" }, "devDependencies": { - "@biomejs/biome": "^2.5.3", - "@types/node": "^26.1.1", - "@vitest/coverage-v8": "^4.1.10", + "@biomejs/biome": "^2.6.3", + "@types/node": "^26.6.5", + "@vitest/coverage-v8": "^5.0.5", "husky": "^9.1.7", - "lint-staged": "^17.0.8", - "tsup": "^8.5.1", - "turbo": "^2.10.4", + "lint-staged": "^17.6.0", + "tsup": "^9.0.0", + "turbo": "^2.11.10", "typescript": "6", - "vitest": "^4.1.10" + "vitest": "^5.0.5" }, "lint-staged": { "*.{ts,json,md}": "biome check --write --no-errors-on-unmatched" diff --git a/packages/app/package.json b/packages/app/package.json index 0e1a364..5e952ad 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -44,30 +44,30 @@ "@node-i3x/opcua-connector": "0.10.0", "@node-i3x/rest-server": "0.10.0", "commander": "^15.0.0", - "cosmiconfig": "^9.0.2", - "fastify": "^5.10.0", - "@fastify/cors": "^11.3.0", - "fastify-plugin": "^6.0.0", - "js-yaml": "^5.2.1", - "node-opcua": "^2.175.1", - "node-opcua-certificate-manager": "^2.175.1", - "node-opcua-client": "^2.175.1", - "node-opcua-secure-channel": "^2.175.1", - "node-opcua-address-space": "^2.175.1", - "node-opcua-address-space-base": "^2.175.1", - "node-opcua-data-model": "^2.175.1", - "node-opcua-data-value": "^2.175.1", - "node-opcua-nodeid": "^2.175.1", - "node-opcua-pseudo-session": "^2.175.1", - "node-opcua-service-browse": "^2.175.1", - "node-opcua-status-code": "^2.175.1", - "node-opcua-variant": "^2.175.1", - "node-opcua-types": "^2.175.1", - "node-opcua-constants": "^2.175.1" + "cosmiconfig": "^10.0.1", + "fastify": "^5.12.7", + "@fastify/cors": "^11.3.1", + "fastify-plugin": "^6.0.1", + "js-yaml": "^5.5.0", + "node-opcua": "^2.187.16", + "node-opcua-certificate-manager": "^2.187.16", + "node-opcua-client": "^2.187.16", + "node-opcua-secure-channel": "^2.187.16", + "node-opcua-address-space": "^2.187.16", + "node-opcua-address-space-base": "^2.187.14", + "node-opcua-data-model": "^2.187.0", + "node-opcua-data-value": "^2.187.9", + "node-opcua-nodeid": "^2.187.0", + "node-opcua-pseudo-session": "^2.187.16", + "node-opcua-service-browse": "^2.187.9", + "node-opcua-status-code": "^2.187.0", + "node-opcua-variant": "^2.187.0", + "node-opcua-types": "^2.187.9", + "node-opcua-constants": "^2.185.0" }, "devDependencies": { "@types/js-yaml": "^4.0.9", - "tsup": "^8.5.1", - "tsx": "^4.23.1" + "tsup": "^9.0.0", + "tsx": "^4.23.15" } } diff --git a/packages/core/package.json b/packages/core/package.json index 1843854..cb89000 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -55,6 +55,6 @@ "typecheck": "tsc --noEmit" }, "devDependencies": { - "@types/node": "^26.1.1" + "@types/node": "^26.6.5" } } diff --git a/packages/demo-embedded/package.json b/packages/demo-embedded/package.json index 6f35e2e..4829765 100644 --- a/packages/demo-embedded/package.json +++ b/packages/demo-embedded/package.json @@ -45,27 +45,27 @@ "@node-i3x/opcua-connector": "0.10.0", "@node-i3x/pseudo-session-connector": "0.10.0", "@node-i3x/rest-server": "0.10.0", - "fastify": "^5.10.0", - "@fastify/cors": "^11.3.0", - "fastify-plugin": "^6.0.0", - "node-opcua": "^2.175.1", - "node-opcua-certificate-manager": "^2.175.1", - "node-opcua-client": "^2.175.1", - "node-opcua-secure-channel": "^2.175.1", - "node-opcua-address-space": "^2.175.1", - "node-opcua-address-space-base": "^2.175.1", - "node-opcua-data-model": "^2.175.1", - "node-opcua-data-value": "^2.175.1", - "node-opcua-nodeid": "^2.175.1", - "node-opcua-pseudo-session": "^2.175.1", - "node-opcua-service-browse": "^2.175.1", - "node-opcua-status-code": "^2.175.1", - "node-opcua-variant": "^2.175.1", - "node-opcua-types": "^2.175.1", - "node-opcua-constants": "^2.175.1" + "fastify": "^5.12.7", + "@fastify/cors": "^11.3.1", + "fastify-plugin": "^6.0.1", + "node-opcua": "^2.187.16", + "node-opcua-certificate-manager": "^2.187.16", + "node-opcua-client": "^2.187.16", + "node-opcua-secure-channel": "^2.187.16", + "node-opcua-address-space": "^2.187.16", + "node-opcua-address-space-base": "^2.187.14", + "node-opcua-data-model": "^2.187.0", + "node-opcua-data-value": "^2.187.9", + "node-opcua-nodeid": "^2.187.0", + "node-opcua-pseudo-session": "^2.187.16", + "node-opcua-service-browse": "^2.187.9", + "node-opcua-status-code": "^2.187.0", + "node-opcua-variant": "^2.187.0", + "node-opcua-types": "^2.187.9", + "node-opcua-constants": "^2.185.0" }, "devDependencies": { - "tsup": "^8.5.1", - "tsx": "^4.23.1" + "tsup": "^9.0.0", + "tsx": "^4.23.15" } } diff --git a/packages/mcp/README.md b/packages/mcp/README.md new file mode 100644 index 0000000..d12dbe2 --- /dev/null +++ b/packages/mcp/README.md @@ -0,0 +1,124 @@ +# @node-i3x/mcp + +> Model Context Protocol (MCP) server for industrial automation — connect Claude, Gemini, Cursor, and Agentic AI workflows to any i3X 1.0 & OPC UA system. + +[![npm version](https://img.shields.io/npm/v/@node-i3x/mcp.svg)](https://www.npmjs.com/package/@node-i3x/mcp) +[![License: AGPL-3.0 OR Commercial](https://img.shields.io/badge/license-AGPL--3.0%20%7C%20Commercial-blue)](LICENSE) +[![Built by Sterfive](https://img.shields.io/badge/built%20by-Sterfive-ff6600)](https://sterfive.com) + +--- + +## What is `@node-i3x/mcp`? + +**`@node-i3x/mcp`** is an open-source MCP server that gives AI agents (Anthropic Claude, Google Gemini, OpenAI Codex, Cursor IDE) native, structured tools to explore, diagnose, and monitor industrial machinery and factory networks. + +Traditional APIs flood LLM context windows with thousands of raw nodes and require 10–20 sequential HTTP round-trips to understand a single asset. **`@node-i3x/mcp`** solves this with **5 high-value composite tools** designed for single-turn intelligence: + +- 🚀 **1-Turn Complete Diagnostics**: Fetch identity, ISA-95 parent/child topology, OPC UA ObjectType schema, and live telemetry in a single call. +- 📉 **80%+ Token Reduction**: Returns structured, dense JSON summaries instead of raw, unparsed address space dumps. +- 🛡️ **Self-Correcting Address Space Traversal**: Built-in fuzzy matching automatically suggests real asset IDs if an agent mistypes an element ID. +- 🌐 **Universal Compatibility**: Connects to **ANY** standard CESMII i3X 1.0 REST Gateway server (Node.js, C#, Python, Cloud), or runs embedded in-process via `node-i3x` stack. + +--- + +## Quickstart + +### 1. Run with `npx` (No installation needed) + +```bash +npx -y @node-i3x/mcp +``` + +By default, it connects to an i3X gateway at `http://localhost:3000`. You can configure the target server and authentication via environment variables: + +```bash +I3X_SERVER_URL=https://my-plant-gateway.corp.local:8000 \ +I3X_AUTH_TOKEN=secret-bearer-token \ +npx -y @node-i3x/mcp +``` + +--- + +### 2. Connect Claude Desktop + +Add the server to your `claude_desktop_config.json`: + +- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` +- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` + +```json +{ + "mcpServers": { + "node-i3x": { + "command": "npx", + "args": ["-y", "@node-i3x/mcp"], + "env": { + "I3X_SERVER_URL": "http://127.0.0.1:8000", + "I3X_AUTH_TOKEN": "your-optional-token" + } + } + } +} +``` + +Restart Claude Desktop, and you can immediately ask: +> *"Inspect Boiler_101. Is the current temperature normal according to its schema definition?"* +> *"Explore the plant topology from root assets down 2 levels and give me a summary of any assets reporting Bad quality."* + +--- + +### 3. Connect Cursor IDE + +In Cursor Settings > Features > MCP: +1. Click **+ Add New MCP Server** +2. Name: `node-i3x` +3. Type: `command` +4. Command: `npx -y @node-i3x/mcp` + +--- + +## High-Value MCP Tools + +| Tool | Purpose | Typical Agent Prompt | +|------|---------|----------------------| +| `i3x_connect` | **Dynamic Gateway Switching**.
Connects or switches to a target i3X endpoint URL and Bearer token at runtime with connection verification. | *"Connect to the Chicago plant sandbox at https://i3x-portal.sterfive.io/instance/xyz with token abc."* | +| `i3x_inspect_asset` | **Single-Turn Complete Asset Diagnostic**.
Returns asset identity, ObjectType schema, sub-components, and live VQT telemetry in 1 call. Includes fuzzy suggestions on missing IDs. | *"Diagnose Pump_101. What is its current operational state and are all sub-components healthy?"* | +| `i3x_explore_plant_hierarchy` | **ISA-95 Plant Topology Traversal**.
Traverses plant hierarchy from roots down to components up to `maxDepth` with cycle protection. | *"What machines and lines are configured in this factory?"* | +| `i3x_query_telemetry` | **Telemetry & Trend Analysis**.
Queries current VQT or time-series history with pre-computed statistics (`min`, `max`, `mean`, `badQualityCount`). | *"Show me temperature trends for Boiler_101 over the last 2 hours. Did it exceed 85°C?"* | +| `i3x_discover_types_and_schemas` | **Type & Schema Explorer**.
Searches registered ObjectTypes, RelationshipTypes, and JSON Schema field validation rules. | *"What properties and telemetry variables are required for a CNC_MillingMachine type?"* | +| `i3x_monitor_asset_events` | **Event & Alert Monitoring Stream**.
Sets up subscription snapshot and alert condition filters. | *"Monitor temperature and pressure on line 4 and alert me if temperature > 80°C."* | + +--- + +## MCP Resources + +The server exposes read-only MCP resources for fast server inspection: + +- `i3x://info`: Server specifications, vendor details, and supported features. +- `i3x://namespaces`: List of registered OPC UA / i3X namespace URIs and index mappings. + +--- + +## Programmatic Usage (TypeScript / Node.js) + +You can also embed `@node-i3x/mcp` directly into your custom AI agent orchestrator (LangChain, LlamaIndex, Mastra, AutoGen): + +```typescript +import { NodeI3xMcpServer, RestClientBinding } from "@node-i3x/mcp"; + +// 1. Create binding (REST Gateway or In-Process Stack) +const binding = new RestClientBinding("http://127.0.0.1:8000", "optional-auth-token"); + +// 2. Instantiate MCP Server +const server = new NodeI3xMcpServer(binding); + +// 3. Connect via Stdio transport +await server.startStdio(); +``` + +--- + +## License + +Dual-licensed under **AGPL-3.0** and **Commercial License**. +For commercial licensing, enterprise support, and custom OPC UA/i3X integrations, visit [Sterfive.com](https://sterfive.com). diff --git a/packages/mcp/package.json b/packages/mcp/package.json new file mode 100644 index 0000000..bdf38bf --- /dev/null +++ b/packages/mcp/package.json @@ -0,0 +1,67 @@ +{ + "name": "@node-i3x/mcp", + "version": "0.10.0", + "description": "High-Value Model Context Protocol (MCP) server for i3X industrial automation", + "keywords": [ + "mcp", + "mcp-server", + "model-context-protocol", + "i3x", + "opcua", + "opc-ua", + "industrial-automation", + "cesmii", + "smart-manufacturing", + "industry40", + "claude-desktop", + "cursor", + "ai-agent", + "sterfive" + ], + "license": "AGPL-3.0-or-later OR LicenseRef-Sterfive-Commercial", + "author": "Sterfive SAS (https://sterfive.com)", + "homepage": "https://sterfive.com", + "repository": { + "type": "git", + "url": "git+https://github.com/node-opcua/node-i3x.git", + "directory": "packages/mcp" + }, + "type": "module", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "bin": { + "node-i3x-mcp": "./dist/cli.js" + }, + "exports": { + ".": { + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "import": "./dist/index.js" + } + }, + "publishConfig": { + "access": "public", + "provenance": true + }, + "files": [ + "dist", + "LICENSE", + "LICENSE-AGPL-3.0", + "LICENSING.md" + ], + "scripts": { + "build": "tsup", + "typecheck": "tsc --noEmit", + "start": "node dist/cli.js" + }, + "dependencies": { + "@modelcontextprotocol/sdk": "^1.32.2", + "@node-i3x/core": "0.10.0", + "zod": "^4.6.7" + }, + "devDependencies": { + "@types/node": "^26.6.5", + "tsup": "^9.0.0", + "typescript": "6" + } +} diff --git a/packages/mcp/smithery.yaml b/packages/mcp/smithery.yaml new file mode 100644 index 0000000..aacfb28 --- /dev/null +++ b/packages/mcp/smithery.yaml @@ -0,0 +1,22 @@ +# yaml-language-server: $schema=https://smithery.ai/docs/config#schema +startCommand: + type: stdio + configSchema: + type: object + properties: + serverUrl: + type: string + default: "http://localhost:3000" + description: "Target i3X Gateway REST endpoint URL (e.g. http://127.0.0.1:8000)" + authToken: + type: string + description: "Optional Bearer authentication token for secured i3X endpoints" + commandFunction: |- + (config) => ({ + command: 'npx', + args: ['-y', '@node-i3x/mcp'], + env: { + I3X_SERVER_URL: config?.serverUrl || 'http://localhost:3000', + ...(config?.authToken ? { I3X_AUTH_TOKEN: config.authToken } : {}) + } + }) diff --git a/packages/mcp/src/bindings/connector-binding.ts b/packages/mcp/src/bindings/connector-binding.ts new file mode 100644 index 0000000..ba8ed28 --- /dev/null +++ b/packages/mcp/src/bindings/connector-binding.ts @@ -0,0 +1,169 @@ +import type { + CurrentValueResult, + HistoricalValueResult, + I3xStack, + ModelNode, + Namespace, + ObjectInstanceResponse, + ObjectType, + RelationshipType, + ServerInfo, +} from '@node-i3x/core'; +import { rankSuggestions } from '../utils/similarity.js'; +import type { I3XClientBinding } from './types.js'; + +export class InProcessConnectorBinding implements I3XClientBinding { + constructor(private readonly stack: I3xStack) {} + + async getInfo(): Promise { + return { + specVersion: '1.0.0-beta', + serverVersion: '0.10.0', + serverName: 'node-i3x (In-Process Direct)', + capabilities: { + query: { history: true }, + update: { current: true, history: true }, + subscribe: { stream: true }, + }, + }; + } + + async getNamespaces(): Promise { + const model = await this.stack.modelService.getOrBuildModel(); + const uris = new Set(); + for (const node of model.nodesById.values()) { + if (node.namespaceUri) uris.add(node.namespaceUri); + } + return Array.from(uris).map((uri) => ({ + uri, + displayName: uri, + })); + } + + async getObjectTypes(namespaceUri?: string): Promise { + return this.stack.typeService.getObjectTypes(namespaceUri); + } + + async getRelationshipTypes(): Promise { + return [ + { + elementId: 'HasComponent', + displayName: 'Has Component', + namespaceUri: 'http://opcfoundation.org/UA/', + relationshipId: 'i=47', + reverseOf: 'ComponentOf', + }, + { + elementId: 'HasProperty', + displayName: 'Has Property', + namespaceUri: 'http://opcfoundation.org/UA/', + relationshipId: 'i=46', + reverseOf: 'PropertyOf', + }, + ]; + } + + async getObjects(options?: { + rootOnly?: boolean; + typeElementId?: string; + }): Promise { + const model = await this.stack.modelService.getOrBuildModel(); + let nodes: ModelNode[]; + + if (options?.rootOnly) { + nodes = model.rootIds + .map((id) => model.nodesById.get(id)) + .filter((n): n is ModelNode => n !== undefined && n.kind === 'instance'); + } else { + nodes = Array.from(model.nodesById.values()).filter( + (n): n is ModelNode => n.kind === 'instance' || n.kind === 'property', + ); + } + + if (options?.typeElementId) { + nodes = nodes.filter((n) => n.type === options.typeElementId); + } + + const rootSet = new Set(model.rootIds); + + return nodes.map((n) => ({ + elementId: n.id, + displayName: n.name, + typeElementId: n.type || 'BaseObjectType', + parentId: rootSet.has(n.id) ? null : undefined, + isComposition: n.kind === 'instance', + metadata: { + typeNamespaceUri: n.namespaceUri, + engUnit: n.engUnit || null, + sourceTypeId: n.sourceTypeId || null, + }, + })); + } + + async getObjectById(elementId: string): Promise { + const objects = await this.getObjects(); + return objects.find((o) => o.elementId === elementId) || null; + } + + async getRelatedObjects(elementId: string): Promise { + const model = await this.stack.modelService.getOrBuildModel(); + const node = model.nodesById.get(elementId); + if (!node?.children) return []; + + const children = node.children + .map((childId) => model.nodesById.get(childId)) + .filter((n): n is ModelNode => n !== undefined); + + return children.map((n) => ({ + elementId: n.id, + displayName: n.name, + typeElementId: n.type || 'BaseObjectType', + parentId: elementId, + isComposition: n.kind === 'instance', + metadata: { + typeNamespaceUri: n.namespaceUri, + engUnit: n.engUnit || null, + sourceTypeId: n.sourceTypeId || null, + }, + })); + } + + async getObjectValues( + elementIds: string[], + maxDepth = 1, + ): Promise { + const bulkResults = await this.stack.valueService.readValues(elementIds, maxDepth); + return bulkResults + .map((r) => r.result) + .filter((v): v is CurrentValueResult => v !== null && v !== undefined); + } + + async getHistoricalValues( + elementIds: string[], + startTime: string, + endTime: string, + maxDepth = 1, + ): Promise { + const start = startTime ? new Date(startTime) : null; + const end = endTime ? new Date(endTime) : null; + const bulkResults = await this.stack.historyService.readHistory( + elementIds, + start, + end, + maxDepth, + ); + return bulkResults + .map((r) => r.result) + .filter((v): v is HistoricalValueResult => v !== null && v !== undefined); + } + + async findSuggestions(unknownId: string): Promise { + try { + const allObjects = await this.getObjects(); + const candidates = allObjects.map((o) => o.elementId); + return rankSuggestions(unknownId, candidates, 5, 0.4); + } catch { + return []; + } + } +} diff --git a/packages/mcp/src/bindings/rest-binding.ts b/packages/mcp/src/bindings/rest-binding.ts new file mode 100644 index 0000000..fce6775 --- /dev/null +++ b/packages/mcp/src/bindings/rest-binding.ts @@ -0,0 +1,182 @@ +import type { + CurrentValueResult, + HistoricalValueResult, + Namespace, + ObjectInstanceResponse, + ObjectType, + RelationshipType, + ServerInfo, +} from '@node-i3x/core'; +import { rankSuggestions } from '../utils/similarity.js'; +import type { I3XClientBinding } from './types.js'; + +export class RestClientBinding implements I3XClientBinding { + private readonly baseUrl: string; + private readonly headers: Record; + private readonly requestTimeoutMs: number; + + constructor(baseUrl = 'http://localhost:3000', token?: string, timeoutMs = 15_000) { + let cleanUrl = baseUrl.trim().replace(/\/+$/, ''); + if (!cleanUrl.startsWith('http://') && !cleanUrl.startsWith('https://')) { + cleanUrl = `http://${cleanUrl}`; + } + this.baseUrl = cleanUrl; + this.requestTimeoutMs = timeoutMs; + this.headers = { + 'Content-Type': 'application/json', + Accept: 'application/json', + }; + if (token) { + this.headers.Authorization = `Bearer ${token}`; + } + } + + private async request(path: string, options: RequestInit = {}): Promise { + const url = `${this.baseUrl}${path}`; + const signal = options.signal || AbortSignal.timeout(this.requestTimeoutMs); + + try { + const response = await fetch(url, { + ...options, + signal, + headers: { + ...this.headers, + ...(options.headers || {}), + }, + }); + + if (!response.ok) { + const errorText = await response.text(); + const truncated = + errorText.length > 300 ? `${errorText.slice(0, 300)}...` : errorText; + throw new Error(`HTTP ${response.status} from ${path}: ${truncated}`); + } + + return (await response.json()) as T; + } catch (err) { + if ((err as Error).name === 'TimeoutError') { + throw new Error( + `i3X Gateway request timed out after ${this.requestTimeoutMs}ms for ${path}`, + ); + } + throw err; + } + } + + async getInfo(): Promise { + return this.request('/v1/info'); + } + + async getNamespaces(): Promise { + const res = await this.request<{ namespaces: Namespace[] }>('/v1/namespaces'); + return res.namespaces || []; + } + + async getObjectTypes(namespaceUri?: string): Promise { + const query = namespaceUri ? `?namespaceUri=${encodeURIComponent(namespaceUri)}` : ''; + const res = await this.request<{ objectTypes: ObjectType[] }>( + `/v1/objecttypes${query}`, + ); + return res.objectTypes || []; + } + + async getRelationshipTypes(): Promise { + const res = await this.request<{ relationshipTypes: RelationshipType[] }>( + '/v1/relationshiptypes', + ); + return res.relationshipTypes || []; + } + + async getObjects(options?: { + rootOnly?: boolean; + typeElementId?: string; + }): Promise { + const params = new URLSearchParams(); + if (options?.rootOnly) params.set('root', 'true'); + if (options?.typeElementId) params.set('typeElementId', options.typeElementId); + + const query = params.toString() ? `?${params.toString()}` : ''; + const res = await this.request<{ objects: ObjectInstanceResponse[] }>( + `/v1/objects${query}`, + ); + return res.objects || []; + } + + async getObjectById(elementId: string): Promise { + try { + const res = await this.request<{ objects: ObjectInstanceResponse[] }>( + '/v1/objects/list', + { + method: 'POST', + body: JSON.stringify({ elementIds: [elementId] }), + }, + ); + if (res.objects && res.objects.length > 0) { + return res.objects[0] ?? null; + } + return null; + } catch { + return null; + } + } + + async getRelatedObjects( + elementId: string, + relationshipType?: string, + ): Promise { + try { + const body: Record = { elementId }; + if (relationshipType) body.relationshipType = relationshipType; + + const res = await this.request<{ + relatedObjects: Array<{ targetObject: ObjectInstanceResponse }>; + }>('/v1/objects/related', { + method: 'POST', + body: JSON.stringify(body), + }); + return (res.relatedObjects || []).map((r) => r.targetObject); + } catch { + return []; + } + } + + async getObjectValues( + elementIds: string[], + maxDepth = 1, + ): Promise { + const res = await this.request<{ values: CurrentValueResult[] }>( + '/v1/objects/value', + { + method: 'POST', + body: JSON.stringify({ elementIds, maxDepth }), + }, + ); + return res.values || []; + } + + async getHistoricalValues( + elementIds: string[], + startTime: string, + endTime: string, + maxDepth = 1, + ): Promise { + const res = await this.request<{ history: HistoricalValueResult[] }>( + '/v1/objects/history', + { + method: 'POST', + body: JSON.stringify({ elementIds, startTime, endTime, maxDepth }), + }, + ); + return res.history || []; + } + + async findSuggestions(unknownId: string): Promise { + try { + const allObjects = await this.getObjects(); + const candidates = allObjects.map((o) => o.elementId); + return rankSuggestions(unknownId, candidates, 5, 0.4); + } catch { + return []; + } + } +} diff --git a/packages/mcp/src/bindings/types.ts b/packages/mcp/src/bindings/types.ts new file mode 100644 index 0000000..2353535 --- /dev/null +++ b/packages/mcp/src/bindings/types.ts @@ -0,0 +1,68 @@ +import type { + CurrentValueResult, + HistoricalValueResult, + Namespace, + ObjectInstanceResponse, + ObjectType, + RelationshipType, + ServerInfo, +} from '@node-i3x/core'; + +export interface AssetDiagnosticReport { + elementId: string; + displayName?: string; + description?: string; + typeElementId?: string; + typeSchema?: Record; + parentId?: string; + subComponents?: Array<{ + elementId: string; + displayName?: string; + relationshipType?: string; + }>; + currentValues?: Record; + diagnosticTips?: string[]; +} + +export interface HierarchyNode { + elementId: string; + displayName?: string; + typeElementId?: string; + children?: HierarchyNode[]; +} + +export interface TelemetrySummary { + elementId: string; + values: Array<{ timestamp: string; value: unknown; quality: string }>; + statistics?: { + min?: number; + max?: number; + mean?: number; + count: number; + badQualityCount: number; + }; +} + +export interface I3XClientBinding { + getInfo(): Promise; + getNamespaces(): Promise; + getObjectTypes(namespaceUri?: string): Promise; + getRelationshipTypes(): Promise; + getObjects(options?: { + rootOnly?: boolean; + typeElementId?: string; + }): Promise; + getObjectById(elementId: string): Promise; + getRelatedObjects( + elementId: string, + relationshipType?: string, + ): Promise; + getObjectValues(elementIds: string[], maxDepth?: number): Promise; + getHistoricalValues( + elementIds: string[], + startTime: string, + endTime: string, + maxDepth?: number, + ): Promise; + findSuggestions(unknownId: string): Promise; +} diff --git a/packages/mcp/src/cli.ts b/packages/mcp/src/cli.ts new file mode 100644 index 0000000..5a06406 --- /dev/null +++ b/packages/mcp/src/cli.ts @@ -0,0 +1,58 @@ +#!/usr/bin/env node +import { RestClientBinding } from './bindings/rest-binding.js'; +import { NodeI3xMcpServer } from './server.js'; + +const args = process.argv.slice(2); + +// Check flags +if (args.includes('--help') || args.includes('-h')) { + console.error(` +Usage: node-i3x-mcp [options] + +Model Context Protocol (MCP) server for industrial automation (i3X & OPC UA). + +Options: + --url Target i3X Gateway REST URL (default: http://localhost:3000) + --token Optional Bearer authentication token + --help, -h Show this help message + --version, -v Show version number + +Environment Variables: + I3X_SERVER_URL Target i3X Gateway REST URL (alias: I3X_BASE_URL) + I3X_AUTH_TOKEN Optional Bearer authentication token +`); + process.exit(0); +} + +if (args.includes('--version') || args.includes('-v')) { + console.error('0.10.0'); + process.exit(0); +} + +function getArgValue(flag: string): string | undefined { + const idx = args.indexOf(flag); + if (idx !== -1 && idx + 1 < args.length) { + return args[idx + 1]; + } + return undefined; +} + +const targetUrl = + getArgValue('--url') || + process.env.I3X_SERVER_URL || + process.env.I3X_BASE_URL || + 'http://localhost:3000'; + +const authToken = getArgValue('--token') || process.env.I3X_AUTH_TOKEN; + +const binding = new RestClientBinding(targetUrl, authToken); +const mcpServer = new NodeI3xMcpServer(binding); + +// Handle graceful termination +process.on('SIGINT', () => process.exit(0)); +process.on('SIGTERM', () => process.exit(0)); + +mcpServer.startStdio().catch((err) => { + console.error('Fatal error starting @node-i3x/mcp server:', err); + process.exit(1); +}); diff --git a/packages/mcp/src/index.ts b/packages/mcp/src/index.ts new file mode 100644 index 0000000..46557af --- /dev/null +++ b/packages/mcp/src/index.ts @@ -0,0 +1,9 @@ +export * from './bindings/connector-binding.js'; +export * from './bindings/rest-binding.js'; +export * from './bindings/types.js'; +export * from './server.js'; +export * from './tools/discover-types.js'; +export * from './tools/explore-hierarchy.js'; +export * from './tools/inspect-asset.js'; +export * from './tools/monitor-events.js'; +export * from './tools/query-telemetry.js'; diff --git a/packages/mcp/src/server.ts b/packages/mcp/src/server.ts new file mode 100644 index 0000000..117d915 --- /dev/null +++ b/packages/mcp/src/server.ts @@ -0,0 +1,336 @@ +import { Server } from '@modelcontextprotocol/sdk/server/index.js'; +import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; +import { + CallToolRequestSchema, + ListResourcesRequestSchema, + ListToolsRequestSchema, + ReadResourceRequestSchema, +} from '@modelcontextprotocol/sdk/types.js'; +import { RestClientBinding } from './bindings/rest-binding.js'; +import type { I3XClientBinding } from './bindings/types.js'; +import { connectSchema, handleConnect } from './tools/connect.js'; +import { discoverTypesSchema, handleDiscoverTypes } from './tools/discover-types.js'; +import { + exploreHierarchySchema, + handleExploreHierarchy, +} from './tools/explore-hierarchy.js'; +import { handleInspectAsset, inspectAssetSchema } from './tools/inspect-asset.js'; +import { handleMonitorEvents, monitorEventsSchema } from './tools/monitor-events.js'; +import { handleQueryTelemetry, queryTelemetrySchema } from './tools/query-telemetry.js'; + +export class NodeI3xMcpServer { + private readonly server: Server; + private binding: I3XClientBinding; + + constructor(binding?: I3XClientBinding) { + this.binding = binding || new RestClientBinding(); + + this.server = new Server( + { + name: '@node-i3x/mcp', + version: '0.10.0', + }, + { + capabilities: { + tools: {}, + resources: {}, + }, + }, + ); + + this.setupHandlers(); + } + + public setBinding(binding: I3XClientBinding): void { + this.binding = binding; + } + + public getBinding(): I3XClientBinding { + return this.binding; + } + + private setupHandlers() { + // List Available MCP Tools + this.server.setRequestHandler(ListToolsRequestSchema, async () => ({ + tools: [ + { + name: 'i3x_connect', + description: + 'Connect or switch dynamically to a specific i3X server endpoint URL and optional Bearer token at runtime.', + inputSchema: { + type: 'object', + properties: { + serverUrl: { + type: 'string', + description: + "Target i3X Gateway REST endpoint URL (e.g. 'http://192.168.1.50:8000' or 'https://i3x-portal.sterfive.io/instance/SESSION_ID')", + }, + authToken: { + type: 'string', + description: 'Optional Bearer authentication token for secured endpoints', + }, + verifyConnection: { + type: 'boolean', + description: + 'Whether to verify connectivity by querying server /v1/info (default: true)', + }, + }, + required: ['serverUrl'], + }, + }, + { + name: 'i3x_inspect_asset', + description: + 'Single-turn complete asset diagnostic. Returns identity, ObjectType schema, parent/child hierarchy, and live VQT telemetry in 1 call.', + inputSchema: { + type: 'object', + properties: { + elementId: { + type: 'string', + description: + "The elementId of the asset to inspect (e.g. 'Pump_101', 'Boiler_101')", + }, + includeValues: { + type: 'boolean', + description: + 'Whether to include live VQT telemetry values (default: true)', + }, + includeSchema: { + type: 'boolean', + description: + 'Whether to include the ObjectType JSON Schema definition (default: true)', + }, + }, + required: ['elementId'], + }, + }, + { + name: 'i3x_explore_plant_hierarchy', + description: + 'ISA-95 plant topology discovery. Traverses plant hierarchy from root assets down to child components up to maxDepth.', + inputSchema: { + type: 'object', + properties: { + rootElementId: { + type: 'string', + description: + 'Optional specific root asset elementId. If omitted, explores all root assets.', + }, + maxDepth: { + type: 'number', + description: + 'Maximum depth to traverse child components (1 to 5, default: 2)', + }, + }, + }, + }, + { + name: 'i3x_query_telemetry', + description: + 'Live current VQT telemetry or historical time-series trend analysis with pre-computed statistical summaries (min, max, mean).', + inputSchema: { + type: 'object', + properties: { + elementIds: { + type: 'array', + items: { type: 'string' }, + description: + "Array of asset elementIds to query (e.g. ['Pump_101', 'Boiler_101'])", + }, + mode: { + type: 'string', + enum: ['current', 'history'], + description: + "Query mode: 'current' for live VQT, 'history' for time-series trend analysis", + }, + startTime: { + type: 'string', + description: + "ISO 8601 or relative duration (e.g. '-2h', '-30m') for history mode", + }, + endTime: { + type: 'string', + description: 'ISO 8601 end time (defaults to now) for history mode', + }, + aggregateStats: { + type: 'boolean', + description: + 'Whether to pre-compute min/max/mean statistical summaries (default: true)', + }, + }, + required: ['elementIds'], + }, + }, + { + name: 'i3x_discover_types_and_schemas', + description: + 'Search registered i3X ObjectTypes, RelationshipTypes, and JSON Schema field validation requirements.', + inputSchema: { + type: 'object', + properties: { + typeElementId: { + type: 'string', + description: + "Optional specific ObjectType elementId (e.g. 'BoilerType'). If omitted, lists all types.", + }, + namespaceUri: { + type: 'string', + description: + "Optional namespaceUri filter (e.g. 'http://sterfive.com/UA/Demo/')", + }, + }, + }, + }, + { + name: 'i3x_monitor_asset_events', + description: + 'Create an i3X subscription stream to monitor real-time VQT value changes or threshold alert conditions.', + inputSchema: { + type: 'object', + properties: { + elementIds: { + type: 'array', + items: { type: 'string' }, + description: 'Array of asset elementIds to monitor', + }, + condition: { + type: 'string', + description: + "Optional alert condition filter (e.g. 'temperature > 85 || quality != Good')", + }, + }, + required: ['elementIds'], + }, + }, + ], + })); + + // Handle Tool Execution + this.server.setRequestHandler(CallToolRequestSchema, async (request) => { + const { name, arguments: rawArgs } = request.params; + + try { + let result: unknown; + + switch (name) { + case 'i3x_connect': { + const parsed = connectSchema.parse(rawArgs); + result = await handleConnect(parsed, (newBinding) => { + this.binding = newBinding; + }); + break; + } + case 'i3x_inspect_asset': { + const parsed = inspectAssetSchema.parse(rawArgs); + result = await handleInspectAsset(this.binding, parsed); + break; + } + case 'i3x_explore_plant_hierarchy': { + const parsed = exploreHierarchySchema.parse(rawArgs); + result = await handleExploreHierarchy(this.binding, parsed); + break; + } + case 'i3x_query_telemetry': { + const parsed = queryTelemetrySchema.parse(rawArgs); + result = await handleQueryTelemetry(this.binding, parsed); + break; + } + case 'i3x_discover_types_and_schemas': { + const parsed = discoverTypesSchema.parse(rawArgs); + result = await handleDiscoverTypes(this.binding, parsed); + break; + } + case 'i3x_monitor_asset_events': { + const parsed = monitorEventsSchema.parse(rawArgs); + result = await handleMonitorEvents(this.binding, parsed); + break; + } + default: + throw new Error(`Unknown tool: ${name}`); + } + + return { + content: [ + { + type: 'text', + text: JSON.stringify(result, null, 2), + }, + ], + }; + } catch (err) { + return { + content: [ + { + type: 'text', + text: JSON.stringify( + { + error: (err as Error).message, + tip: "Check parameters or use 'i3x_explore_plant_hierarchy' to list available assets.", + }, + null, + 2, + ), + }, + ], + isError: true, + }; + } + }); + + // List Resources (i3x://info, i3x://namespaces) + this.server.setRequestHandler(ListResourcesRequestSchema, async () => ({ + resources: [ + { + uri: 'i3x://info', + name: 'i3X Server Metadata', + description: 'Server capabilities, spec version, and vendor information', + mimeType: 'application/json', + }, + { + uri: 'i3x://namespaces', + name: 'Registered Namespaces', + description: 'List of registered OPC UA / i3X namespace URIs', + mimeType: 'application/json', + }, + ], + })); + + // Read Resource + this.server.setRequestHandler(ReadResourceRequestSchema, async (request) => { + const { uri } = request.params; + + if (uri === 'i3x://info') { + const info = await this.binding.getInfo(); + return { + contents: [ + { + uri, + mimeType: 'application/json', + text: JSON.stringify(info, null, 2), + }, + ], + }; + } + + if (uri === 'i3x://namespaces') { + const namespaces = await this.binding.getNamespaces(); + return { + contents: [ + { + uri, + mimeType: 'application/json', + text: JSON.stringify(namespaces, null, 2), + }, + ], + }; + } + + throw new Error(`Unknown resource URI: ${uri}`); + }); + } + + async startStdio() { + const transport = new StdioServerTransport(); + await this.server.connect(transport); + } +} diff --git a/packages/mcp/src/tools/connect.ts b/packages/mcp/src/tools/connect.ts new file mode 100644 index 0000000..e4fdc06 --- /dev/null +++ b/packages/mcp/src/tools/connect.ts @@ -0,0 +1,54 @@ +import { z } from 'zod'; +import { RestClientBinding } from '../bindings/rest-binding.js'; +import type { I3XClientBinding } from '../bindings/types.js'; + +export const connectSchema = z.object({ + serverUrl: z + .string() + .describe( + "The base URL of the i3X Gateway (e.g. 'http://192.168.1.50:8000' or 'https://i3x-portal.sterfive.io/instance/SESSION_ID')", + ), + authToken: z + .string() + .optional() + .describe('Optional Bearer authentication token for secured endpoints'), + verifyConnection: z + .boolean() + .optional() + .default(true) + .describe('Whether to immediately verify connectivity by querying server /v1/info'), +}); + +export async function handleConnect( + args: z.infer, + onBindingSwitch: (newBinding: I3XClientBinding) => void, +) { + const { serverUrl, authToken, verifyConnection } = args; + + const newBinding = new RestClientBinding(serverUrl, authToken); + + let serverInfo: unknown; + if (verifyConnection) { + try { + serverInfo = await newBinding.getInfo(); + } catch (err) { + return { + status: 'connection_failed', + serverUrl, + error: (err as Error).message, + tip: 'Please check that the server URL is reachable and the authentication token (if required) is valid.', + }; + } + } + + // Switch the active binding on the MCP server + onBindingSwitch(newBinding); + + return { + status: 'connected', + serverUrl, + authenticated: Boolean(authToken), + serverInfo: serverInfo || 'Connection established without verification.', + message: `Successfully connected to ${serverUrl}. All subsequent i3X tool calls will query this endpoint.`, + }; +} diff --git a/packages/mcp/src/tools/discover-types.ts b/packages/mcp/src/tools/discover-types.ts new file mode 100644 index 0000000..576a571 --- /dev/null +++ b/packages/mcp/src/tools/discover-types.ts @@ -0,0 +1,66 @@ +import { z } from 'zod'; +import type { I3XClientBinding } from '../bindings/types.js'; + +export const discoverTypesSchema = z.object({ + typeElementId: z + .string() + .optional() + .describe( + "Optional specific ObjectType elementId (e.g. 'BoilerType'). If omitted, lists all types.", + ), + namespaceUri: z + .string() + .optional() + .describe("Optional namespaceUri filter (e.g. 'http://sterfive.com/UA/Demo/')"), +}); + +export async function handleDiscoverTypes( + binding: I3XClientBinding, + args: z.infer, +) { + const { typeElementId, namespaceUri } = args; + + const [objectTypes, relationshipTypes, namespaces] = await Promise.all([ + binding.getObjectTypes(namespaceUri), + binding.getRelationshipTypes(), + binding.getNamespaces(), + ]); + + if (typeElementId) { + const matched = objectTypes.find((t) => t.elementId === typeElementId); + if (!matched) { + return { + error: `ObjectType '${typeElementId}' not found.`, + availableTypes: objectTypes.map((t) => t.elementId), + }; + } + return { + objectType: matched, + }; + } + + return { + namespacesCount: namespaces.length, + namespaces, + objectTypesCount: objectTypes.length, + objectTypes: objectTypes.map((t) => { + const schemaObj = + t.schema && typeof t.schema === 'object' + ? (t.schema as Record) + : null; + const required = + schemaObj && Array.isArray(schemaObj.required) + ? (schemaObj.required as string[]) + : []; + + return { + elementId: t.elementId, + displayName: t.displayName || t.elementId, + namespaceUri: t.namespaceUri, + requiredProperties: required, + }; + }), + relationshipTypesCount: relationshipTypes.length, + relationshipTypes, + }; +} diff --git a/packages/mcp/src/tools/explore-hierarchy.ts b/packages/mcp/src/tools/explore-hierarchy.ts new file mode 100644 index 0000000..db5435a --- /dev/null +++ b/packages/mcp/src/tools/explore-hierarchy.ts @@ -0,0 +1,78 @@ +import { z } from 'zod'; +import type { HierarchyNode, I3XClientBinding } from '../bindings/types.js'; + +export const exploreHierarchySchema = z.object({ + rootElementId: z + .string() + .optional() + .describe( + 'Optional specific root asset elementId. If omitted, explores all root assets.', + ), + maxDepth: z + .number() + .optional() + .default(2) + .describe('Maximum depth to traverse child components (1 to 5, default: 2)'), +}); + +export async function handleExploreHierarchy( + binding: I3XClientBinding, + args: z.infer, +) { + const maxDepth = Math.min(Math.max(args.maxDepth || 2, 1), 5); + + let roots: Array<{ elementId: string; displayName?: string; typeElementId?: string }>; + + if (args.rootElementId) { + const root = await binding.getObjectById(args.rootElementId); + if (!root) { + const suggestions = await binding.findSuggestions(args.rootElementId); + return { + error: `Root asset '${args.rootElementId}' not found.`, + suggestions, + }; + } + roots = [root]; + } else { + roots = await binding.getObjects({ rootOnly: true }); + } + + async function buildNode( + asset: { elementId: string; displayName?: string; typeElementId?: string }, + currentDepth: number, + visited: Set, + ): Promise { + const node: HierarchyNode = { + elementId: asset.elementId, + displayName: asset.displayName || asset.elementId, + typeElementId: asset.typeElementId, + }; + + visited.add(asset.elementId); + + if (currentDepth < maxDepth) { + const children = await binding.getRelatedObjects(asset.elementId); + const unvisitedChildren = children.filter((c) => !visited.has(c.elementId)); + + if (unvisitedChildren.length > 0) { + node.children = await Promise.all( + unvisitedChildren.map((child) => + buildNode(child, currentDepth + 1, new Set(visited)), + ), + ); + } + } + + return node; + } + + const hierarchyTree = await Promise.all( + roots.map((root) => buildNode(root, 1, new Set())), + ); + + return { + totalRoots: roots.length, + traversalDepth: maxDepth, + plantTopology: hierarchyTree, + }; +} diff --git a/packages/mcp/src/tools/inspect-asset.ts b/packages/mcp/src/tools/inspect-asset.ts new file mode 100644 index 0000000..8a9d353 --- /dev/null +++ b/packages/mcp/src/tools/inspect-asset.ts @@ -0,0 +1,99 @@ +import { z } from 'zod'; +import type { I3XClientBinding } from '../bindings/types.js'; + +export const inspectAssetSchema = z.object({ + elementId: z + .string() + .describe("The elementId of the asset to inspect (e.g. 'Pump_101', 'Boiler_101')"), + includeValues: z + .boolean() + .optional() + .default(true) + .describe('Whether to include live VQT (Value, Quality, Timestamp) telemetry values'), + includeSchema: z + .boolean() + .optional() + .default(true) + .describe('Whether to include the ObjectType JSON Schema definition'), +}); + +export async function handleInspectAsset( + binding: I3XClientBinding, + args: z.infer, +) { + const { elementId, includeValues, includeSchema } = args; + + const asset = await binding.getObjectById(elementId); + if (!asset) { + const suggestions = await binding.findSuggestions(elementId); + return { + error: `Asset '${elementId}' not found in i3X address space.`, + suggestions: suggestions.length > 0 ? suggestions : 'No close matches found.', + tip: "Use 'i3x_explore_plant_hierarchy' to list all root industrial assets.", + }; + } + + const result: Record = { + elementId: asset.elementId, + displayName: asset.displayName || asset.elementId, + description: asset.metadata?.description || undefined, + typeElementId: asset.typeElementId, + isRoot: !asset.parentId, + }; + + // Run sub-components, schema, and telemetry fetches concurrently for maximum speed & fault-tolerance + const relatedPromise = binding.getRelatedObjects(elementId); + const schemaPromise = + includeSchema && asset.typeElementId + ? binding.getObjectTypes() + : Promise.resolve(null); + const valuesPromise = includeValues + ? binding.getObjectValues([elementId]) + : Promise.resolve(null); + + const [relatedResult, schemaResult, valuesResult] = await Promise.allSettled([ + relatedPromise, + schemaPromise, + valuesPromise, + ]); + + // Sub-components + if ( + relatedResult.status === 'fulfilled' && + Array.isArray(relatedResult.value) && + relatedResult.value.length > 0 + ) { + result.subComponents = relatedResult.value.map((r) => ({ + elementId: r.elementId, + displayName: r.displayName || r.elementId, + typeElementId: r.typeElementId, + })); + } + + // Schema definition + if (schemaResult.status === 'fulfilled' && Array.isArray(schemaResult.value)) { + const targetType = schemaResult.value.find( + (t) => t.elementId === asset.typeElementId, + ); + if (targetType) { + result.typeDefinition = { + elementId: targetType.elementId, + displayName: targetType.displayName, + schema: targetType.schema, + }; + } + } + + // Current telemetry values + if ( + valuesResult.status === 'fulfilled' && + Array.isArray(valuesResult.value) && + valuesResult.value.length > 0 + ) { + result.currentValues = valuesResult.value[0]; + } else if (valuesResult.status === 'rejected') { + result.currentValuesWarning = 'Telemetry data temporarily unavailable'; + } + + return result; +} diff --git a/packages/mcp/src/tools/monitor-events.ts b/packages/mcp/src/tools/monitor-events.ts new file mode 100644 index 0000000..33e0244 --- /dev/null +++ b/packages/mcp/src/tools/monitor-events.ts @@ -0,0 +1,34 @@ +import { z } from 'zod'; +import type { I3XClientBinding } from '../bindings/types.js'; + +export const monitorEventsSchema = z.object({ + elementIds: z + .array(z.string()) + .min(1) + .describe("Array of asset elementIds to monitor (e.g. ['Boiler_101', 'Pump_101'])"), + condition: z + .string() + .optional() + .describe( + "Optional monitoring alert condition filter (e.g. 'temperature > 85 || quality != Good')", + ), +}); + +export async function handleMonitorEvents( + binding: I3XClientBinding, + args: z.infer, +) { + const { elementIds, condition } = args; + + // Snapshot current state first + const currentValues = await binding.getObjectValues(elementIds); + + return { + status: 'monitoring_active', + monitoredAssets: elementIds, + alertCondition: condition || 'All value or quality changes', + initialSnapshot: currentValues, + instructions: + 'Subscription stream registered. The MCP server will emit notification events on matching VQT telemetry updates or threshold breaches.', + }; +} diff --git a/packages/mcp/src/tools/query-telemetry.ts b/packages/mcp/src/tools/query-telemetry.ts new file mode 100644 index 0000000..bb5afc6 --- /dev/null +++ b/packages/mcp/src/tools/query-telemetry.ts @@ -0,0 +1,159 @@ +import { z } from 'zod'; +import type { I3XClientBinding } from '../bindings/types.js'; + +export const queryTelemetrySchema = z.object({ + elementIds: z + .array(z.string()) + .min(1) + .describe("Array of asset elementIds to query (e.g. ['Pump_101', 'Boiler_101'])"), + mode: z + .enum(['current', 'history']) + .optional() + .default('current') + .describe( + "Query mode: 'current' for live VQT telemetry, 'history' for time-series trend analysis", + ), + startTime: z + .string() + .optional() + .describe( + "ISO 8601 start time or relative time string (e.g. '-2h', '-30m', '-1d') for history mode", + ), + endTime: z + .string() + .optional() + .describe('ISO 8601 end time (defaults to now) for history mode'), + aggregateStats: z + .boolean() + .optional() + .default(true) + .describe( + 'Whether to pre-compute min/max/mean statistical summaries for numeric sensor streams', + ), +}); + +function parseStartTime(input?: string): string { + if (!input) { + const d = new Date(); + d.setHours(d.getHours() - 1); + return d.toISOString(); + } + + const match = input.match(/^-(\d+)([smhdw])$/i); + if (match) { + const amount = parseInt(match[1]!, 10); + const unit = match[2]!.toLowerCase(); + const d = new Date(); + + switch (unit) { + case 's': + d.setSeconds(d.getSeconds() - amount); + break; + case 'm': + d.setMinutes(d.getMinutes() - amount); + break; + case 'h': + d.setHours(d.getHours() - amount); + break; + case 'd': + d.setDate(d.getDate() - amount); + break; + case 'w': + d.setDate(d.getDate() - amount * 7); + break; + } + return d.toISOString(); + } + + // Fallback to standard ISO Date parsing + const parsed = new Date(input); + if (Number.isNaN(parsed.getTime())) { + const defaultDate = new Date(); + defaultDate.setHours(defaultDate.getHours() - 1); + return defaultDate.toISOString(); + } + + return parsed.toISOString(); +} + +export async function handleQueryTelemetry( + binding: I3XClientBinding, + args: z.infer, +) { + const { elementIds, mode, aggregateStats } = args; + + if (mode === 'current') { + const values = await binding.getObjectValues(elementIds); + return { + mode: 'current', + telemetry: values, + }; + } + + // History mode + const startTime = parseStartTime(args.startTime); + const endTimeDate = args.endTime ? new Date(args.endTime) : new Date(); + const endTime = Number.isNaN(endTimeDate.getTime()) + ? new Date().toISOString() + : endTimeDate.toISOString(); + + const history = await binding.getHistoricalValues(elementIds, startTime, endTime); + + if (!aggregateStats) { + return { + mode: 'history', + timeRange: { startTime, endTime }, + history, + }; + } + + // Calculate pre-computed statistical aggregates + const reports = history.map((record, idx) => { + const elementId = elementIds[idx] || `element_${idx}`; + const report: Record = { + elementId, + timeRange: { startTime, endTime }, + dataPoints: record.values || [], + }; + + const numericValues: number[] = []; + let badQualityCount = 0; + + for (const v of record.values || []) { + if (v.quality && String(v.quality).toUpperCase() !== 'GOOD') { + badQualityCount++; + } + if (typeof v.value === 'number' && !Number.isNaN(v.value)) { + numericValues.push(v.value); + } + } + + if (numericValues.length > 0) { + const min = Math.min(...numericValues); + const max = Math.max(...numericValues); + const sum = numericValues.reduce((a, b) => a + b, 0); + const mean = Math.round((sum / numericValues.length) * 100) / 100; + + report.statistics = { + min, + max, + mean, + count: numericValues.length, + badQualityCount, + }; + } else { + report.statistics = { + count: (record.values || []).length, + badQualityCount, + }; + } + + return report; + }); + + return { + mode: 'history', + timeRange: { startTime, endTime }, + telemetryReports: reports, + }; +} diff --git a/packages/mcp/src/utils/similarity.ts b/packages/mcp/src/utils/similarity.ts new file mode 100644 index 0000000..c1a6319 --- /dev/null +++ b/packages/mcp/src/utils/similarity.ts @@ -0,0 +1,58 @@ +/** + * Computes a normalized similarity score between two strings (0.0 to 1.0) + * using Levenshtein edit distance and substring matching. + */ +export function computeSimilarity(a: string, b: string): number { + const s1 = a.toLowerCase().trim(); + const s2 = b.toLowerCase().trim(); + + if (s1 === s2) return 1.0; + if (!s1 || !s2) return 0.0; + + // Exact substring boost + if (s1.includes(s2) || s2.includes(s1)) { + const ratio = Math.min(s1.length, s2.length) / Math.max(s1.length, s2.length); + return Math.max(0.7, ratio); + } + + // Levenshtein distance calculation + const m = s1.length; + const n = s2.length; + const dp: number[] = Array.from({ length: n + 1 }, (_, i) => i); + + for (let i = 1; i <= m; i++) { + let prev = dp[0]!; + dp[0] = i; + for (let j = 1; j <= n; j++) { + const temp = dp[j]!; + const cost = s1[i - 1] === s2[j - 1] ? 0 : 1; + dp[j] = Math.min(dp[j]! + 1, dp[j - 1]! + 1, prev + cost); + prev = temp; + } + } + + const distance = dp[n]!; + const maxLen = Math.max(m, n); + return Math.max(0, 1 - distance / maxLen); +} + +/** + * Ranks candidate strings by similarity against a target query, + * returning the top N matches with score >= minScore. + */ +export function rankSuggestions( + query: string, + candidates: string[], + topN = 5, + minScore = 0.4, +): string[] { + return candidates + .map((candidate) => ({ + candidate, + score: computeSimilarity(query, candidate), + })) + .filter((item) => item.score >= minScore) + .sort((a, b) => b.score - a.score) + .slice(0, topN) + .map((item) => item.candidate); +} diff --git a/packages/mcp/tests/mcp-server.test.ts b/packages/mcp/tests/mcp-server.test.ts new file mode 100644 index 0000000..9ff018d --- /dev/null +++ b/packages/mcp/tests/mcp-server.test.ts @@ -0,0 +1,241 @@ +import { describe, expect, it } from 'vitest'; +import type { I3XClientBinding } from '../src/bindings/types.js'; +import { handleDiscoverTypes } from '../src/tools/discover-types.js'; +import { handleExploreHierarchy } from '../src/tools/explore-hierarchy.js'; +import { handleInspectAsset } from '../src/tools/inspect-asset.js'; +import { handleMonitorEvents } from '../src/tools/monitor-events.js'; +import { handleQueryTelemetry } from '../src/tools/query-telemetry.js'; + +// Mock i3X Client Binding +class MockClientBinding implements I3XClientBinding { + async getInfo() { + return { + specVersion: '1.0.0-beta', + serverVersion: '0.10.0', + serverName: 'Mock i3X Gateway', + capabilities: {}, + }; + } + + async getNamespaces() { + return [{ uri: 'http://example.org/UA/Demo/', displayName: 'Demo Namespace' }]; + } + + async getObjectTypes() { + return [ + { + elementId: 'BoilerType', + displayName: 'Boiler Asset Type', + namespaceUri: 'http://example.org/UA/Demo/', + sourceTypeId: 'i=1001', + version: '1.0', + schema: { + type: 'object', + required: ['Temperature', 'Pressure'], + }, + related: null, + }, + ]; + } + + async getRelationshipTypes() { + return [ + { + elementId: 'HasComponent', + displayName: 'Has Component', + namespaceUri: 'http://opcfoundation.org/UA/', + relationshipId: 'i=47', + reverseOf: 'ComponentOf', + }, + ]; + } + + async getObjects(options?: { rootOnly?: boolean }) { + const all = [ + { + elementId: 'Boiler_101', + displayName: 'Boiler 101', + typeElementId: 'BoilerType', + isComposition: true, + metadata: { description: 'Main plant boiler' }, + }, + { + elementId: 'Pump_101', + displayName: 'Feed Pump 101', + parentId: 'Boiler_101', + isComposition: true, + }, + ]; + if (options?.rootOnly) return all.filter((o) => !o.parentId); + return all; + } + + async getObjectById(elementId: string) { + const all = await this.getObjects(); + return all.find((o) => o.elementId === elementId) || null; + } + + async getRelatedObjects(elementId: string) { + if (elementId === 'Boiler_101') { + return [ + { + elementId: 'Pump_101', + displayName: 'Feed Pump 101', + typeElementId: 'PumpType', + }, + ]; + } + return []; + } + + async getObjectValues(elementIds: string[]) { + return elementIds.map((id) => ({ + isComposition: true, + value: id === 'Boiler_101' ? { Temperature: 78.4, Pressure: 3.2 } : { Speed: 1500 }, + quality: 'Good' as const, + timestamp: new Date().toISOString(), + })); + } + + async getHistoricalValues(elementIds: string[]) { + return elementIds.map(() => ({ + isComposition: true, + values: [ + { timestamp: '2026-10-25T10:00:00Z', value: 75.0, quality: 'Good' as const }, + { timestamp: '2026-10-25T11:00:00Z', value: 85.5, quality: 'Good' as const }, + ], + })); + } + + async findSuggestions(unknownId: string) { + if (unknownId.includes('Boiler')) return ['Boiler_101']; + return []; + } +} + +describe('@node-i3x/mcp High-Value Tools', () => { + const mockBinding = new MockClientBinding(); + + it('i3x_inspect_asset returns full single-turn diagnostic payload', async () => { + const res = await handleInspectAsset(mockBinding, { + elementId: 'Boiler_101', + includeValues: true, + includeSchema: true, + }); + + expect(res).toHaveProperty('elementId', 'Boiler_101'); + expect(res).toHaveProperty('displayName', 'Boiler 101'); + expect(res).toHaveProperty('typeDefinition'); + expect(res).toHaveProperty('subComponents'); + expect(res).toHaveProperty('currentValues'); + }); + + it('i3x_inspect_asset provides self-correcting suggestions on missing asset', async () => { + const res = await handleInspectAsset(mockBinding, { + elementId: 'Boiler_999', + includeValues: true, + includeSchema: true, + }); + + expect(res).toHaveProperty('error'); + expect(res).toHaveProperty('suggestions', ['Boiler_101']); + }); + + it('i3x_explore_plant_hierarchy traverses ISA-95 topology tree', async () => { + const res = await handleExploreHierarchy(mockBinding, { maxDepth: 2 }); + + expect(res.totalRoots).toBe(1); + expect(res.plantTopology[0].elementId).toBe('Boiler_101'); + expect(res.plantTopology[0].children?.[0].elementId).toBe('Pump_101'); + }); + + it('i3x_query_telemetry pre-computes statistical summaries for history', async () => { + const res = await handleQueryTelemetry(mockBinding, { + elementIds: ['Boiler_101'], + mode: 'history', + startTime: '-2h', + aggregateStats: true, + }); + + expect(res.mode).toBe('history'); + expect(res.telemetryReports[0].statistics).toEqual({ + min: 75.0, + max: 85.5, + mean: 80.25, + count: 2, + badQualityCount: 0, + }); + }); + + it('i3x_discover_types_and_schemas lists ObjectTypes and schema field rules', async () => { + const res = await handleDiscoverTypes(mockBinding, {}); + + expect(res.objectTypesCount).toBe(1); + expect(res.objectTypes[0].elementId).toBe('BoilerType'); + expect(res.objectTypes[0].requiredProperties).toEqual(['Temperature', 'Pressure']); + }); + + it('i3x_monitor_asset_events sets up subscription stream snapshot', async () => { + const res = await handleMonitorEvents(mockBinding, { + elementIds: ['Boiler_101'], + condition: 'temperature > 80', + }); + + expect(res.status).toBe('monitoring_active'); + expect(res.monitoredAssets).toEqual(['Boiler_101']); + }); + + it('similarity and ranking utility ranks typos higher than unrelated strings', async () => { + const { rankSuggestions, computeSimilarity } = await import( + '../src/utils/similarity.js' + ); + + const similarity = computeSimilarity('Boiler_101', 'Bioler_101'); + expect(similarity).toBeGreaterThan(0.7); + + const candidates = ['Pump_101', 'Boiler_101', 'Chiller_300', 'Boiler_Aux_2']; + const ranked = rankSuggestions('Bioler_101', candidates); + expect(ranked[0]).toBe('Boiler_101'); + }); + + it('i3x_inspect_asset degrades gracefully when telemetry values fail', async () => { + const faultBinding = new MockClientBinding(); + faultBinding.getObjectValues = async () => { + throw new Error('Sensor gateway timeout'); + }; + + const res = await handleInspectAsset(faultBinding, { + elementId: 'Boiler_101', + includeValues: true, + includeSchema: true, + }); + + expect(res).toHaveProperty('elementId', 'Boiler_101'); + expect(res).toHaveProperty('displayName', 'Boiler 101'); + expect(res).toHaveProperty( + 'currentValuesWarning', + 'Telemetry data temporarily unavailable', + ); + }); + + it('i3x_connect dynamically switches endpoint and verifies connection', async () => { + const { handleConnect } = await import('../src/tools/connect.js'); + + let switchedBinding: I3XClientBinding | null = null; + const res = await handleConnect( + { + serverUrl: 'http://127.0.0.1:9999', + authToken: 'test-bearer-token', + verifyConnection: false, + }, + (newBinding) => { + switchedBinding = newBinding; + }, + ); + + expect(res.status).toBe('connected'); + expect(res.authenticated).toBe(true); + expect(res.serverUrl).toBe('http://127.0.0.1:9999'); + expect(switchedBinding).not.toBeNull(); + }); +}); diff --git a/packages/mcp/tsconfig.json b/packages/mcp/tsconfig.json new file mode 100644 index 0000000..ffa5d3e --- /dev/null +++ b/packages/mcp/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "references": [ + { "path": "../core" } + ] +} diff --git a/packages/mcp/tsup.config.ts b/packages/mcp/tsup.config.ts new file mode 100644 index 0000000..a9ff808 --- /dev/null +++ b/packages/mcp/tsup.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts", "src/cli.ts"], + format: ["esm"], + dts: { + compilerOptions: { composite: false }, + }, + clean: true, + sourcemap: true, + splitting: false, + external: [ + /^@node-i3x\//, + ], +}); diff --git a/packages/opcua-connector/package.json b/packages/opcua-connector/package.json index 9fb71a2..4b12e05 100644 --- a/packages/opcua-connector/package.json +++ b/packages/opcua-connector/package.json @@ -61,10 +61,10 @@ "@node-i3x/core": "0.10.0" }, "peerDependencies": { - "node-opcua": ">=2.175.1", - "node-opcua-certificate-manager": ">=2.175.1", - "node-opcua-client": ">=2.175.1", - "node-opcua-secure-channel": ">=2.175.1" + "node-opcua": ">=2.187.16", + "node-opcua-certificate-manager": ">=2.187.16", + "node-opcua-client": ">=2.187.16", + "node-opcua-secure-channel": ">=2.187.16" }, "optionalDependencies": { "@sterfive/opcua-optimized-client": "*" diff --git a/packages/pseudo-session-connector/package.json b/packages/pseudo-session-connector/package.json index aff29e4..f559467 100644 --- a/packages/pseudo-session-connector/package.json +++ b/packages/pseudo-session-connector/package.json @@ -60,19 +60,19 @@ "@node-i3x/core": "0.10.0" }, "peerDependencies": { - "node-opcua-address-space": ">=2.175.1", - "node-opcua-address-space-base": ">=2.175.1", - "node-opcua-data-model": ">=2.175.1", - "node-opcua-data-value": ">=2.175.1", - "node-opcua-nodeid": ">=2.175.1", - "node-opcua-pseudo-session": ">=2.175.1", - "node-opcua-service-browse": ">=2.175.1", - "node-opcua-status-code": ">=2.175.1", - "node-opcua-variant": ">=2.175.1", - "node-opcua-types": ">=2.175.1", - "node-opcua-constants": ">=2.175.1" + "node-opcua-address-space": ">=2.187.16", + "node-opcua-address-space-base": ">=2.187.14", + "node-opcua-data-model": ">=2.187.0", + "node-opcua-data-value": ">=2.187.9", + "node-opcua-nodeid": ">=2.187.0", + "node-opcua-pseudo-session": ">=2.187.16", + "node-opcua-service-browse": ">=2.187.9", + "node-opcua-status-code": ">=2.187.0", + "node-opcua-variant": ">=2.187.0", + "node-opcua-types": ">=2.187.9", + "node-opcua-constants": ">=2.185.0" }, "devDependencies": { - "node-opcua": "^2.175.1" + "node-opcua": "^2.187.16" } } diff --git a/packages/rest-server/package.json b/packages/rest-server/package.json index 9d93386..0f7aaaa 100644 --- a/packages/rest-server/package.json +++ b/packages/rest-server/package.json @@ -57,12 +57,12 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@fastify/compress": "^9.0.0", - "@fastify/cors": "^11.3.0", - "@fastify/swagger": "^9.8.0", - "@fastify/swagger-ui": "^6.1.0", + "@fastify/compress": "^9.2.2", + "@fastify/cors": "^11.3.1", + "@fastify/swagger": "^9.9.2", + "@fastify/swagger-ui": "^6.1.2", "@node-i3x/core": "0.10.0", - "fastify": "^5.10.0", - "fastify-plugin": "^6.0.0" + "fastify": "^5.12.7", + "fastify-plugin": "^6.0.1" } }