diff --git a/package-lock.json b/package-lock.json index eff3af93..87de1b6a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,30 +10,30 @@ "license": "Apache-2.0", "dependencies": { "@iobroker/adapter-core": "^3.2.3", - "@iobroker/dm-utils": "^0.6.9", + "@iobroker/dm-utils": "^0.6.11", "@iobroker/i18n": "^0.3.1", "@iobroker/type-detector": "^4.1.0", "@matter/main": "0.11.9-alpha.0-20241208-09ad57f78", "@matter/nodejs": "0.11.9-alpha.0-20241208-09ad57f78", "@project-chip/matter.js": "0.11.9-alpha.0-20241208-09ad57f78", - "axios": "^1.7.8", + "axios": "^1.7.9", "jsonwebtoken": "^9.0.2" }, "devDependencies": { "@alcalzone/release-script": "^3.8.0", "@alcalzone/release-script-plugin-iobroker": "^3.7.2", "@alcalzone/release-script-plugin-license": "^3.7.0", - "@iobroker/build-tools": "^2.0.9", + "@iobroker/build-tools": "^2.0.11", "@iobroker/dev-server": "^0.7.3", "@iobroker/eslint-config": "^1.0.0", "@iobroker/legacy-testing": "^2.0.1", - "@iobroker/types": "^7.0.5", + "@iobroker/types": "^7.0.6", "@types/jsonwebtoken": "^9.0.7", "@types/node": "^22.10.1", "chai": "^4.5.0", "colorette": "^2.0.20", - "mocha": "^10.8.2", - "puppeteer": "^23.9.0", + "mocha": "^11.0.1", + "puppeteer": "^23.10.2", "typescript": "~5.7.2" }, "engines": { @@ -497,9 +497,9 @@ } }, "node_modules/@iobroker/build-tools": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@iobroker/build-tools/-/build-tools-2.0.9.tgz", - "integrity": "sha512-IE/hawJUAWJ2xsbZawpMyQf3pHd+KhA3TI9/7wIZnR2KRCiBo/kv8YTIL7SVPd9G08/Z0NDUW2CEdJXAYu3kSw==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@iobroker/build-tools/-/build-tools-2.0.11.tgz", + "integrity": "sha512-rlc9WpKQ/14chWSW6disUYcTuIgy/qXazDsdEwtMxxp1XydWV6VJz3L/we5YC37LpIYTnpBsgzm2vb+kpDWmQw==", "dev": true, "dependencies": { "glob": "^11.0.0" @@ -561,12 +561,12 @@ } }, "node_modules/@iobroker/dm-utils": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/@iobroker/dm-utils/-/dm-utils-0.6.9.tgz", - "integrity": "sha512-X+fWJEKT3FwCvVM1LutOgAjYT9LCARR5j6MmmLSZ/0iEaiVTyW3vpk++9uw8nvmb5mIs4fmOdKGgkGMhfrQ5xA==", + "version": "0.6.11", + "resolved": "https://registry.npmjs.org/@iobroker/dm-utils/-/dm-utils-0.6.11.tgz", + "integrity": "sha512-n15JyBh6eqo5J6Mo+IGEhc84qc5RSnBFbOtCmNvxA6Rj2p2t610KM30NwfZTQcqJrxSgrNjjx+SpunIssOklnQ==", "license": "MIT", "dependencies": { - "@iobroker/adapter-core": "^3.2.2" + "@iobroker/adapter-core": "^3.2.3" } }, "node_modules/@iobroker/eslint-config": { @@ -611,6 +611,133 @@ "mocha": "^10.8.2" } }, + "node_modules/@iobroker/legacy-testing/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@iobroker/legacy-testing/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/@iobroker/legacy-testing/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@iobroker/legacy-testing/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@iobroker/legacy-testing/node_modules/mocha": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@iobroker/legacy-testing/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@iobroker/legacy-testing/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@iobroker/testing": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/@iobroker/testing/-/testing-4.1.3.tgz", @@ -628,6 +755,133 @@ "sinon-chai": "^3.7.0" } }, + "node_modules/@iobroker/testing/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@iobroker/testing/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/@iobroker/testing/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@iobroker/testing/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@iobroker/testing/node_modules/mocha": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@iobroker/testing/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@iobroker/testing/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@iobroker/type-detector": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@iobroker/type-detector/-/type-detector-4.1.0.tgz", @@ -635,9 +889,9 @@ "license": "MIT" }, "node_modules/@iobroker/types": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@iobroker/types/-/types-7.0.5.tgz", - "integrity": "sha512-RR72kGAJrojLDxBP6US297oJ8tiVfW/BPljpiTGKKbFy7y3lhSawgQalj/tBlYgvIxzg0T0vKwbhZhmSdNnjXg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@iobroker/types/-/types-7.0.6.tgz", + "integrity": "sha512-hCAw/ICjxQ48cIAVBvBAkj2NMkBkYILNFsPLH5yhcAH+B57SldS/2uz37+8i+dFzn4GlMXC7X04flJK02kyIdw==", "license": "MIT", "engines": { "node": ">=12.0.0" @@ -1026,16 +1280,16 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.4.1.tgz", - "integrity": "sha512-0kdAbmic3J09I6dT8e9vE2JOCSt13wHCW5x/ly8TSt2bDtuIWe2TgLZZDHdcziw9AVCzflMAXCrVyRIhIs44Ng==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.6.0.tgz", + "integrity": "sha512-jESwj3APl78YUWHf28s2EjL0OIxcvl1uLU6Ge68KQ9ZXNsekUcbdr9dCi6vEO8naXS18lWXCV56shVkPStzXSQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "debug": "^4.3.7", + "debug": "^4.4.0", "extract-zip": "^2.0.1", "progress": "^2.0.3", - "proxy-agent": "^6.4.0", + "proxy-agent": "^6.5.0", "semver": "^7.6.3", "tar-fs": "^3.0.6", "unbzip2-stream": "^1.4.3", @@ -1048,6 +1302,24 @@ "node": ">=18" } }, + "node_modules/@puppeteer/browsers/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/@serialport/binding-mock": { "version": "10.2.2", "resolved": "https://registry.npmjs.org/@serialport/binding-mock/-/binding-mock-10.2.2.tgz", @@ -1899,14 +2171,11 @@ } }, "node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, "engines": { "node": ">= 14" } @@ -2340,9 +2609,9 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.8.tgz", - "integrity": "sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -5733,36 +6002,20 @@ } }, "node_modules/get-uri": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", - "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", + "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", "dev": true, "license": "MIT", "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", - "debug": "^4.3.4", - "fs-extra": "^11.2.0" + "debug": "^4.3.4" }, "engines": { "node": ">= 14" } }, - "node_modules/get-uri/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -6160,13 +6413,13 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { @@ -7916,9 +8169,9 @@ } }, "node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.0.1.tgz", + "integrity": "sha512-+3GkODfsDG71KSCQhc4IekSW+ItCK/kiez1Z28ksWvYhKXV/syxMlerR/sC7whDp7IyreZ4YxceMLdTs5hQE8A==", "dev": true, "license": "MIT", "dependencies": { @@ -7929,7 +8182,7 @@ "diff": "^5.2.0", "escape-string-regexp": "^4.0.0", "find-up": "^5.0.0", - "glob": "^8.1.0", + "glob": "^10.4.5", "he": "^1.2.0", "js-yaml": "^4.1.0", "log-symbols": "^4.1.0", @@ -7948,7 +8201,7 @@ "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 14.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/mocha/node_modules/brace-expansion": { @@ -7974,26 +8227,65 @@ } }, "node_modules/mocha/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/mocha/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/mocha/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/mocha/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -8007,6 +8299,23 @@ "node": ">=10" } }, + "node_modules/mocha/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -8683,20 +8992,20 @@ } }, "node_modules/pac-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", - "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.1.0.tgz", + "integrity": "sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw==", "dev": true, "license": "MIT", "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.5", + "https-proxy-agent": "^7.0.6", "pac-resolver": "^7.0.1", - "socks-proxy-agent": "^8.0.4" + "socks-proxy-agent": "^8.0.5" }, "engines": { "node": ">= 14" @@ -9152,20 +9461,20 @@ } }, "node_modules/proxy-agent": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", - "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "^4.3.4", "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.3", + "https-proxy-agent": "^7.0.6", "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", + "pac-proxy-agent": "^7.1.0", "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" + "socks-proxy-agent": "^8.0.5" }, "engines": { "node": ">= 14" @@ -9242,18 +9551,18 @@ } }, "node_modules/puppeteer": { - "version": "23.9.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-23.9.0.tgz", - "integrity": "sha512-WfB8jGwFV+qrD9dcJJVvWPFJBU6kxeu2wxJz9WooDGfM3vIiKLgzImEDBxUQnCBK/2cXB3d4dV6gs/LLpgfLDg==", + "version": "23.10.2", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-23.10.2.tgz", + "integrity": "sha512-Iii2ZwdukXzEGeCxs2/GG8G+dbVCylnlBrTxZnMxLW/7w/ftoGq4VB2Bt1vwrbMIn1XwFqxYEWNEkZpIkcVfwg==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.4.1", + "@puppeteer/browsers": "2.6.0", "chromium-bidi": "0.8.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1367902", - "puppeteer-core": "23.9.0", + "puppeteer-core": "23.10.2", "typed-query-selector": "^2.12.0" }, "bin": { @@ -9264,15 +9573,15 @@ } }, "node_modules/puppeteer-core": { - "version": "23.9.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.9.0.tgz", - "integrity": "sha512-hLVrav2HYMVdK0YILtfJwtnkBAwNOztUdR4aJ5YKDvgsbtagNr6urUJk9HyjRA9e+PaLI3jzJ0wM7A4jSZ7Qxw==", + "version": "23.10.2", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.10.2.tgz", + "integrity": "sha512-SEPjEbhPxRlzjGRCs8skwfnzFQj6XrZZmoMz0JIQbanj0fBpQ5HOGgyQTyh4YOW33q+461plJc5GfsQ+ErVBgQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.4.1", + "@puppeteer/browsers": "2.6.0", "chromium-bidi": "0.8.0", - "debug": "^4.3.7", + "debug": "^4.4.0", "devtools-protocol": "0.0.1367902", "typed-query-selector": "^2.12.0", "ws": "^8.18.0" @@ -9281,6 +9590,24 @@ "node": ">=18" } }, + "node_modules/puppeteer-core/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/qs": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", @@ -10562,13 +10889,13 @@ } }, "node_modules/socks-proxy-agent": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", - "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.1.1", + "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" }, @@ -10776,9 +11103,9 @@ } }, "node_modules/streamx": { - "version": "2.20.2", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.2.tgz", - "integrity": "sha512-aDGDLU+j9tJcUdPGOaHmVF1u/hhI+CsGkT02V3OKlHDV7IukOI+nTWAGkiZEKCO35rWN1wIr4tS7YFr1f4qSvA==", + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.0.tgz", + "integrity": "sha512-Qz6MsDZXJ6ur9u+b+4xCG18TluU7PGlRfXVAAjNiGsFrBUt/ioyLkxbFaKJygoPs+/kW4VyBj0bSj89Qu0IGyg==", "dev": true, "license": "MIT", "dependencies": { @@ -11139,11 +11466,14 @@ } }, "node_modules/text-decoder": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.1.tgz", - "integrity": "sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.2.tgz", + "integrity": "sha512-/MDslo7ZyWTA2vnk1j7XoDVfXsGk3tp+zFEJHJGm0UjIlQifonVFwlVbQDFh8KJzTBnT8ie115TYqir6bclddA==", "dev": true, - "license": "Apache-2.0" + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } }, "node_modules/through": { "version": "2.3.8", diff --git a/package.json b/package.json index b5b90f7d..2b299ead 100644 --- a/package.json +++ b/package.json @@ -28,29 +28,29 @@ "dependencies": { "@iobroker/adapter-core": "^3.2.3", "@iobroker/i18n": "^0.3.1", - "@iobroker/dm-utils": "^0.6.9", + "@iobroker/dm-utils": "^0.6.11", "@iobroker/type-detector": "^4.1.0", "@matter/main": "0.11.9-alpha.0-20241208-09ad57f78", "@matter/nodejs": "0.11.9-alpha.0-20241208-09ad57f78", "@project-chip/matter.js": "0.11.9-alpha.0-20241208-09ad57f78", - "axios": "^1.7.8", + "axios": "^1.7.9", "jsonwebtoken": "^9.0.2" }, "devDependencies": { "@alcalzone/release-script": "^3.8.0", "@alcalzone/release-script-plugin-iobroker": "^3.7.2", "@alcalzone/release-script-plugin-license": "^3.7.0", - "@iobroker/build-tools": "^2.0.9", + "@iobroker/build-tools": "^2.0.11", "@iobroker/dev-server": "^0.7.3", "@iobroker/eslint-config": "^1.0.0", "@iobroker/legacy-testing": "^2.0.1", - "@iobroker/types": "^7.0.5", + "@iobroker/types": "^7.0.6", "@types/jsonwebtoken": "^9.0.7", "@types/node": "^22.10.1", "chai": "^4.5.0", "colorette": "^2.0.20", - "mocha": "^10.8.2", - "puppeteer": "^23.9.0", + "mocha": "^11.0.1", + "puppeteer": "^23.10.2", "typescript": "~5.7.2" }, "bugs": { diff --git a/src-admin/package-lock.json b/src-admin/package-lock.json index 2b73007f..644b4745 100644 --- a/src-admin/package-lock.json +++ b/src-admin/package-lock.json @@ -1,24 +1,24 @@ { "name": "iobroker.matter", - "version": "0.2.6", + "version": "0.2.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "iobroker.matter", - "version": "0.2.6", + "version": "0.2.7", "dependencies": { - "@foxriver76/iob-component-lib": "^0.1.6", - "@iobroker/adapter-react-v5": "^7.4.2", - "@iobroker/dm-gui-components": "~7.4.2", + "@foxriver76/iob-component-lib": "^0.2.0", + "@iobroker/adapter-react-v5": "^7.4.4", + "@iobroker/dm-gui-components": "~7.4.4", "@iobroker/type-detector": "^4.1.0", - "@types/react-dom": "^18.3.1", + "@types/react-dom": "^18.3.3", "@types/uuid": "^10.0.0", "@vitejs/plugin-react": "^4.3.4", "qr-scanner": "^1.4.2", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-icons": "^5.3.0", + "react-icons": "^5.4.0", "react-qr-code": "^2.0.15", "uuid": "^11.0.3" }, @@ -974,9 +974,9 @@ } }, "node_modules/@foxriver76/iob-component-lib": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@foxriver76/iob-component-lib/-/iob-component-lib-0.1.6.tgz", - "integrity": "sha512-rw0jdn7sZVePZ8/jHikkqfHMlMqvkprrNK7N1AHvnrNFy9saaayLNGO8s2sM2c7waKahvk8MPoa3L92q2wn4BQ==" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@foxriver76/iob-component-lib/-/iob-component-lib-0.2.0.tgz", + "integrity": "sha512-zM8lqcAWRE6ONenUllUfvk9ITOp7dTpE7BF5X2xhjI2z0aKreDWuUIvgYgm9YAsFm+D5JSX9QPNmbewgsIq1kg==" }, "node_modules/@icons/material": { "version": "0.2.4", @@ -988,21 +988,21 @@ } }, "node_modules/@iobroker/adapter-react-v5": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@iobroker/adapter-react-v5/-/adapter-react-v5-7.4.2.tgz", - "integrity": "sha512-D80sL0jwLSQqvaVKzXIGEGck1oAUVKWPww1n29n8APV2U16PbfOB06C2U8wIQNxAnuSM+NVQBxgtk2Kk1VcNIA==", - "license": "MIT", - "dependencies": { - "@emotion/react": "^11.13.3", - "@emotion/styled": "^11.13.0", - "@iobroker/js-controller-common": "^6.0.11", - "@iobroker/js-controller-common-db": "^6.0.11", - "@iobroker/socket-client": "^3.1.2", - "@iobroker/types": "^6.0.11", - "@mui/icons-material": "^6.1.7", - "@mui/material": "^6.1.7", - "@sentry/browser": "^8.38.0", - "cronstrue": "^2.51.0", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@iobroker/adapter-react-v5/-/adapter-react-v5-7.4.4.tgz", + "integrity": "sha512-xggt3C+ry2p3FpbYmQXd7uAFzlt/+Z452RQe+IXElZMVduieiuZjCg1Wco/Ax+lZK3qLmxUShmTTJSF6/Cl/Ig==", + "license": "MIT", + "dependencies": { + "@emotion/react": "^11.13.5", + "@emotion/styled": "^11.13.5", + "@iobroker/js-controller-common": "^7.0.5", + "@iobroker/js-controller-common-db": "^7.0.5", + "@iobroker/socket-client": "^3.1.3", + "@iobroker/types": "^7.0.5", + "@mui/icons-material": "^6.1.10", + "@mui/material": "^6.1.10", + "@sentry/browser": "^8.42.0", + "cronstrue": "^2.52.0", "react-color": "^2.19.3", "react-colorful": "^5.6.1", "react-cropper": "^2.3.3", @@ -1014,12 +1014,12 @@ } }, "node_modules/@iobroker/db-base": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/db-base/-/db-base-6.0.11.tgz", - "integrity": "sha512-WImlfdwr0O5+sQOQkI9zaScB4UFNuIGXs+K+5bL4+f1yJIPIuFU+njBDI7vUz6zoE+cLGkQRqNxwh6wfMVxBuQ==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@iobroker/db-base/-/db-base-7.0.6.tgz", + "integrity": "sha512-+zXsJ7pw9AlSnD91zlDbEosfvGRtI7DwxXr2bD0kMINZpmFOJLPxdVRe1OVjOMc2+ohyibDliwqNzGyVCFkuyw==", "license": "MIT", "dependencies": { - "@iobroker/js-controller-common-db": "6.0.11", + "@iobroker/js-controller-common-db": "7.0.6", "deep-clone": "^3.0.3", "fs-extra": "^11.1.0", "respjs": "^4.2.0" @@ -1029,13 +1029,13 @@ } }, "node_modules/@iobroker/db-objects-file": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/db-objects-file/-/db-objects-file-6.0.11.tgz", - "integrity": "sha512-MqCzDftazOj+IZQcfviaG7xUTdIuILjrjmf2wXSbFYsZbnK5zDhm4wxnWPT+dVrPBWnqWJ3aAzhhaq6I3BQPqQ==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@iobroker/db-objects-file/-/db-objects-file-7.0.6.tgz", + "integrity": "sha512-Gph6eeimucIJzY4HxFZmXYx9hvvqLhC3wkPQm+w59n4jA+o5OcYWeHIBNgPJpJTjJSukhUlJAA22jWbZy+qQAw==", "license": "Apache 2.0", "dependencies": { - "@iobroker/db-base": "6.0.11", - "@iobroker/db-objects-redis": "6.0.11", + "@iobroker/db-base": "7.0.6", + "@iobroker/db-objects-redis": "7.0.6", "deep-clone": "^3.0.3", "fs-extra": "^11.1.0" }, @@ -1044,15 +1044,15 @@ } }, "node_modules/@iobroker/db-objects-jsonl": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/db-objects-jsonl/-/db-objects-jsonl-6.0.11.tgz", - "integrity": "sha512-DBPykrMKvx3mxPVB1U8HE6d8NbA5pSHYIEXq+b6/IgwLLGX+LmjSz5TNqmO5gaYA6a4z4kOg44F56SRrUBIgCg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@iobroker/db-objects-jsonl/-/db-objects-jsonl-7.0.6.tgz", + "integrity": "sha512-Kb9iW7IlK/8fm97P2TRunI/JaPWHFQesHKRPEqq696EFtLqozQMr5CwxRjrseYXFoUAk47zALjUPnPdG9dAldw==", "license": "Apache 2.0", "dependencies": { "@alcalzone/jsonl-db": "~3.1.1", - "@iobroker/db-base": "6.0.11", - "@iobroker/db-objects-file": "6.0.11", - "@iobroker/db-objects-redis": "6.0.11", + "@iobroker/db-base": "7.0.6", + "@iobroker/db-objects-file": "7.0.6", + "@iobroker/db-objects-redis": "7.0.6", "deep-clone": "^3.0.3", "fs-extra": "^11.1.0" }, @@ -1061,12 +1061,12 @@ } }, "node_modules/@iobroker/db-objects-redis": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/db-objects-redis/-/db-objects-redis-6.0.11.tgz", - "integrity": "sha512-aOAcfG1iCWVilTkjhbTialP9BhYh+HrB1RwfIqF/56MMroKFCPMCi9E/zlrooNYWWAdN6EFb4DcIM4ZpQlXDVg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@iobroker/db-objects-redis/-/db-objects-redis-7.0.6.tgz", + "integrity": "sha512-BPUP5MgzxNwJCkkDhVXLNAccREOcikhNVI5DcRzrZ3j4yRbKOfjro1/Wu5/nudBMNI4pmUDP/rwE7IbfUPaV2A==", "license": "Apache 2.0", "dependencies": { - "@iobroker/db-base": "6.0.11", + "@iobroker/db-base": "7.0.6", "deep-clone": "^3.0.3", "ioredis": "^4.28.2", "mime-types": "^2.1.35", @@ -1078,40 +1078,40 @@ } }, "node_modules/@iobroker/db-states-file": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/db-states-file/-/db-states-file-6.0.11.tgz", - "integrity": "sha512-K1tRuaqaIpwlpeo/z2btWTPKsILYM5jXf+8aw3AVCwULA328MbMpBBMreehliGGVTTIUoq25ZdcR/zLjYl2lJA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@iobroker/db-states-file/-/db-states-file-7.0.6.tgz", + "integrity": "sha512-MIFlOVLd9emgAoWR+vq5B+A68+YxOCGLkN7RPxQw2kUO1pomK3USrbLF4ReCFtM8GLZI/HhaT5Q+a9FBYU1+2w==", "license": "MIT", "dependencies": { - "@iobroker/db-base": "6.0.11", - "@iobroker/db-states-redis": "6.0.11" + "@iobroker/db-base": "7.0.6", + "@iobroker/db-states-redis": "7.0.6" }, "engines": { "node": ">=12.0.0" } }, "node_modules/@iobroker/db-states-jsonl": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/db-states-jsonl/-/db-states-jsonl-6.0.11.tgz", - "integrity": "sha512-Q06TvVLdfH+FPBo29CHLLIXeaOZXJ3tyImlp17mOr9wVqCr64sN6iZ+vsIe5Dd4j7nzg+pptR2il8TgAyJg8Yw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@iobroker/db-states-jsonl/-/db-states-jsonl-7.0.6.tgz", + "integrity": "sha512-KBPxXo7Z+/l9kWZBrhmNQTYALPssIzsYJ4w1qB2EbQlrlklAQV7Aodf4g+M+/pkzy7aq9BVwvzksr/yhIk1BxQ==", "license": "MIT", "dependencies": { "@alcalzone/jsonl-db": "~3.1.1", - "@iobroker/db-base": "6.0.11", - "@iobroker/db-states-file": "6.0.11", - "@iobroker/db-states-redis": "6.0.11" + "@iobroker/db-base": "7.0.6", + "@iobroker/db-states-file": "7.0.6", + "@iobroker/db-states-redis": "7.0.6" }, "engines": { "node": ">=12.0.0" } }, "node_modules/@iobroker/db-states-redis": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/db-states-redis/-/db-states-redis-6.0.11.tgz", - "integrity": "sha512-9/oiBfCMmPLDIj3IJSHF3TNbbksEOF1t6JlLSkPI0Vvs8WAE1C+dUb3VSq9FFKk9d6Fp00l8JObACPD01/AImg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@iobroker/db-states-redis/-/db-states-redis-7.0.6.tgz", + "integrity": "sha512-HQbAzJ6Q11U9pkO4h+mI8J08D9O1IpPcGeQGDjptJOKNzQMeQ2fvTc+N+n+vtiEy/PBanNADXsi9frbcyWqWGg==", "license": "MIT", "dependencies": { - "@iobroker/db-base": "6.0.11", + "@iobroker/db-base": "7.0.6", "ioredis": "^4.28.2" }, "engines": { @@ -1119,29 +1119,30 @@ } }, "node_modules/@iobroker/dm-gui-components": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@iobroker/dm-gui-components/-/dm-gui-components-7.4.2.tgz", - "integrity": "sha512-ABipkE7ooz+wpSU6BDDL3NJLHIJWoU93pTyyXcei3hV3imjB0UZQzbSto7p5MJeGmQomIr4sq3HRVciGP9DWQQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@iobroker/dm-gui-components/-/dm-gui-components-7.4.4.tgz", + "integrity": "sha512-z1Aq4ZunQbCE01msLxPcztdxdOcPihAFJ+hg0awcWTSZwAAbvi4emm0uxJOPOWaa0kTpyW99GNXKYUlfNu4VKg==", "license": "MIT", "dependencies": { - "@iobroker/adapter-react-v5": "7.4.2", - "@iobroker/json-config": "7.4.2" + "@iobroker/adapter-react-v5": "7.4.4", + "@iobroker/json-config": "7.4.4" } }, "node_modules/@iobroker/js-controller-common": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/js-controller-common/-/js-controller-common-6.0.11.tgz", - "integrity": "sha512-VZH04ksSPADIltOQsy83PkQkaHhLEdCAnwOWJARrLWg6aGtl0DjAoQDl6DmgXErkDWurlRH73BdkfaVh5+TZQg==", - "license": "MIT", - "dependencies": { - "@iobroker/db-objects-file": "6.0.11", - "@iobroker/db-objects-jsonl": "6.0.11", - "@iobroker/db-objects-redis": "6.0.11", - "@iobroker/db-states-file": "6.0.11", - "@iobroker/db-states-jsonl": "6.0.11", - "@iobroker/db-states-redis": "6.0.11", - "@iobroker/js-controller-common-db": "6.0.11", - "fs-extra": "^11.1.0" + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@iobroker/js-controller-common/-/js-controller-common-7.0.6.tgz", + "integrity": "sha512-W/R37U1DuR6wxdbCp0ZWdmnQiGXVTCjrOcPKysd2kABQ/wWwOuaUrtllLaB9aPzNGE7WCRqvo26U18Vm2U7fSg==", + "license": "MIT", + "dependencies": { + "@iobroker/db-objects-file": "7.0.6", + "@iobroker/db-objects-jsonl": "7.0.6", + "@iobroker/db-objects-redis": "7.0.6", + "@iobroker/db-states-file": "7.0.6", + "@iobroker/db-states-jsonl": "7.0.6", + "@iobroker/db-states-redis": "7.0.6", + "@iobroker/js-controller-common-db": "7.0.6", + "fs-extra": "^11.1.0", + "jszip": "^3.10.1" }, "engines": { "node": ">=12.0.0" @@ -1152,13 +1153,13 @@ } }, "node_modules/@iobroker/js-controller-common-db": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/js-controller-common-db/-/js-controller-common-db-6.0.11.tgz", - "integrity": "sha512-7HhcEgK3qT6oKWF9U4a7RmruNyDvsxXf/YXWKuE2C4iuoOX5Q9dJDlYs1LP6t9eGGULaylVa06v5nK9xh0VCuA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@iobroker/js-controller-common-db/-/js-controller-common-db-7.0.6.tgz", + "integrity": "sha512-36eTg6RP43hCF7MirjjMSFu61sqZh4MOpj64uaETSKZcjwrhV5QWztdeJXB72H9b5yqo880m5wtNXLEW/FQjbw==", "license": "MIT", "dependencies": { "@alcalzone/pak": "^0.8.1", - "axios": "^1.6.3", + "axios": "^1.7.4", "ci-info": "^3.8.0", "deep-clone": "^3.0.3", "event-stream": "^4.0.1", @@ -1184,21 +1185,104 @@ } }, "node_modules/@iobroker/json-config": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@iobroker/json-config/-/json-config-7.4.2.tgz", - "integrity": "sha512-W6rY1rvSwZgMoECczAiexRTSWMiVcJSJum2/A6xmcf/DOIT+VTWKHO/K45aUPGCO+2Whx8YVfoNu+BQ8SRZ4RA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@iobroker/json-config/-/json-config-7.4.4.tgz", + "integrity": "sha512-H9tlE3eCu1mAjlEH+eOOj8ny/Z9j/o3yRWwiZvjm8+9Q6A4SIhzwQveviVikJSZNFq/ow5cOVbk8Z3N56fL5Ng==", "dependencies": { - "@iobroker/adapter-react-v5": "7.4.2", - "@mui/x-date-pickers": "^7.22.0", + "@iobroker/adapter-react-v5": "7.4.4", + "@mui/x-date-pickers": "^7.23.0", "crypto-js": "^4.2.0", - "react-ace": "^12.0.0", + "react-ace": "^13.0.0", "react-qr-code": "^2.0.15" } }, + "node_modules/@iobroker/json-config/node_modules/@mui/x-date-pickers": { + "version": "7.23.1", + "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-7.23.1.tgz", + "integrity": "sha512-Jr4beZ7r2lvWBaFnkIAg9BgiNFcfeJy4AUe3MbG10BBSZyB++odGqhOUAIGqkP7MpUzEGlTv4NUaaD7gYTAQPg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.7", + "@mui/utils": "^5.16.6 || ^6.0.0", + "@mui/x-internals": "7.23.0", + "@types/react-transition-group": "^4.4.11", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "@mui/material": "^5.15.14 || ^6.0.0", + "@mui/system": "^5.15.14 || ^6.0.0", + "date-fns": "^2.25.0 || ^3.2.0 || ^4.0.0", + "date-fns-jalali": "^2.13.0-0 || ^3.2.0-0", + "dayjs": "^1.10.7", + "luxon": "^3.0.2", + "moment": "^2.29.4", + "moment-hijri": "^2.1.2 || ^3.0.0", + "moment-jalaali": "^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "date-fns": { + "optional": true + }, + "date-fns-jalali": { + "optional": true + }, + "dayjs": { + "optional": true + }, + "luxon": { + "optional": true + }, + "moment": { + "optional": true + }, + "moment-hijri": { + "optional": true + }, + "moment-jalaali": { + "optional": true + } + } + }, + "node_modules/@iobroker/json-config/node_modules/react-ace": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/react-ace/-/react-ace-13.0.0.tgz", + "integrity": "sha512-PPk2O/ArHzDtbnK82QImfHYXwuiitRgHJf5AxwMQh9zciojbWsPmKJm1tMgWOYLCtGEz8/Dh3MxRxrXe7QcstQ==", + "license": "MIT", + "dependencies": { + "ace-builds": "^1.36.3", + "diff-match-patch": "^1.0.5", + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "react": "^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/@iobroker/socket-client": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@iobroker/socket-client/-/socket-client-3.1.2.tgz", - "integrity": "sha512-pgY0Jp+of9RZ1Tj4sY4uRnc9cLEsgMbOuQLfHtAF5NblL6Z8N5iravwMF3/cctsREeXjJy1rCYewRny37zNCeg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@iobroker/socket-client/-/socket-client-3.1.3.tgz", + "integrity": "sha512-Ny7GCpw1uk1u65hG6uL5NJp6KQIAawxllmQfYLsZpj11Vn/qL7SgGvY6LazFnjrLZOcVl8kT5IHxR9wAoLLkjw==", "license": "MIT" }, "node_modules/@iobroker/type-detector": { @@ -1208,9 +1292,9 @@ "license": "MIT" }, "node_modules/@iobroker/types": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/types/-/types-6.0.11.tgz", - "integrity": "sha512-RNDURjtL5Cm9wt6ocCqdRi86Qx1350zBIvvrJ9+Fjgasoi6cWCdoOghkwEeb95TH2j//q/uLqWwL8SZ0vxx6Kw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@iobroker/types/-/types-7.0.6.tgz", + "integrity": "sha512-hCAw/ICjxQ48cIAVBvBAkj2NMkBkYILNFsPLH5yhcAH+B57SldS/2uz37+8i+dFzn4GlMXC7X04flJK02kyIdw==", "license": "MIT", "engines": { "node": ">=12.0.0" @@ -1277,9 +1361,9 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.7.tgz", - "integrity": "sha512-POuIBi80BZBogQkG4PQKIGwy4QFwB+kOr+OI4k7Znh7LqMAIhwB9OC00l6M+w1GrZJYj3T8R5WX8G6QAIvoVEw==", + "version": "6.1.10", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.10.tgz", + "integrity": "sha512-LY5wdiLCBDY7u+Od8UmFINZFGN/5ZU90fhAslf/ZtfP+5RhuY45f679pqYIxe0y54l6Gkv9PFOc8Cs10LDTBYg==", "license": "MIT", "funding": { "type": "opencollective", @@ -1287,9 +1371,9 @@ } }, "node_modules/@mui/icons-material": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.7.tgz", - "integrity": "sha512-RGzkeHNArIVy5ZQ12bq/8VYNeICEyngngsFskTJ/2hYKhIeIII3iRGtaZaSvLpXh7h3Fg3VKTulT+QU0w5K4XQ==", + "version": "6.1.10", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.10.tgz", + "integrity": "sha512-G6P1BCSt6EQDcKca47KwvKjlqgOXFbp2I3oWiOlFgKYTANBH89yk7ttMQ5ysqNxSYAB+4TdM37MlPYp4+FkVrQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0" @@ -1302,7 +1386,7 @@ "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@mui/material": "^6.1.7", + "@mui/material": "^6.1.10", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, @@ -1313,16 +1397,16 @@ } }, "node_modules/@mui/material": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.7.tgz", - "integrity": "sha512-KsjujQL/A2hLd1PV3QboF+W6SSL5QqH6ZlSuQoeYz9r69+TnyBFIevbYLxdjJcJmGBjigL5pfpn7hTGop+vhSg==", + "version": "6.1.10", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.10.tgz", + "integrity": "sha512-txnwYObY4N9ugv5T2n5h1KcbISegZ6l65w1/7tpSU5OB6MQCU94YkP8n/3slDw2KcEfRk4+4D8EUGfhSPMODEQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0", - "@mui/core-downloads-tracker": "^6.1.7", - "@mui/system": "^6.1.7", + "@mui/core-downloads-tracker": "^6.1.10", + "@mui/system": "^6.1.10", "@mui/types": "^7.2.19", - "@mui/utils": "^6.1.7", + "@mui/utils": "^6.1.10", "@popperjs/core": "^2.11.8", "@types/react-transition-group": "^4.4.11", "clsx": "^2.1.1", @@ -1341,7 +1425,7 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@mui/material-pigment-css": "^6.1.7", + "@mui/material-pigment-css": "^6.1.10", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" @@ -1362,13 +1446,13 @@ } }, "node_modules/@mui/private-theming": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.7.tgz", - "integrity": "sha512-uLbfUSsug5K0LVkv0PI6Flste3le8+6WSL2omdTiYde93P89Qr7pKr8TA6d2yXfr+Bm+SvD8/fGnkaRwFkryuQ==", + "version": "6.1.10", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.10.tgz", + "integrity": "sha512-DqgsH0XFEweeG3rQfVkqTkeXcj/E76PGYWag8flbPdV8IYdMo+DfVdFlZK8JEjsaIVD2Eu1kJg972XnH5pfnBQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0", - "@mui/utils": "^6.1.7", + "@mui/utils": "^6.1.10", "prop-types": "^15.8.1" }, "engines": { @@ -1389,14 +1473,14 @@ } }, "node_modules/@mui/styled-engine": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.7.tgz", - "integrity": "sha512-Ou4CxN7MQmwrfG1Pu6EYjPgPChQXxPDJrwgizLXlRPOad5qAq4gYXRuzrGQ2DfGjjwmJhjI8T6A0SeapAZPGig==", + "version": "6.1.10", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.10.tgz", + "integrity": "sha512-+NV9adKZYhslJ270iPjf2yzdVJwav7CIaXcMlPSi1Xy1S/zRe5xFgZ6BEoMdmGRpr34lIahE8H1acXP2myrvRw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0", - "@emotion/cache": "^11.13.1", - "@emotion/serialize": "^1.3.2", + "@emotion/cache": "^11.13.5", + "@emotion/serialize": "^1.3.3", "@emotion/sheet": "^1.4.0", "csstype": "^3.1.3", "prop-types": "^15.8.1" @@ -1423,16 +1507,16 @@ } }, "node_modules/@mui/system": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.7.tgz", - "integrity": "sha512-qbMGgcC/FodpuRSfjXlEDdbNQaW++eATh0vNBcPUv2/YXSpReoOpoT9FhogxEBNks+aQViDXBRZKh6HX2fVmwg==", + "version": "6.1.10", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.10.tgz", + "integrity": "sha512-5YNIqxETR23SIkyP7MY2fFnXmplX/M4wNi2R+10AVRd3Ub+NLctWY/Vs5vq1oAMF0eSDLhRTGUjaUe+IGSfWqg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0", - "@mui/private-theming": "^6.1.7", - "@mui/styled-engine": "^6.1.7", + "@mui/private-theming": "^6.1.10", + "@mui/styled-engine": "^6.1.10", "@mui/types": "^7.2.19", - "@mui/utils": "^6.1.7", + "@mui/utils": "^6.1.10", "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1" @@ -1477,9 +1561,9 @@ } }, "node_modules/@mui/utils": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.7.tgz", - "integrity": "sha512-Gr7cRZxBoZ0BIa3Xqf/2YaUrBLyNPJvXPQH3OsD9WMZukI/TutibbQBVqLYpgqJn8pKSjbD50Yq2auG0wI1xOw==", + "version": "6.1.10", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.10.tgz", + "integrity": "sha512-1ETuwswGjUiAf2dP9TkBy8p49qrw2wXa+RuAjNTRE5+91vtXJ1HKrs7H9s8CZd1zDlQVzUcUAPm9lpQwF5ogTw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0", @@ -1506,76 +1590,10 @@ } } }, - "node_modules/@mui/x-date-pickers": { - "version": "7.22.3", - "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-7.22.3.tgz", - "integrity": "sha512-shNp92IrST5BiVy2f4jbrmRaD32QhyUthjh1Oexvpcn0v6INyuWgxfodoTi5ZCnE5Ue5UVFSs4R9Xre0UbJ5DQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.25.7", - "@mui/utils": "^5.16.6 || ^6.0.0", - "@mui/x-internals": "7.21.0", - "@types/react-transition-group": "^4.4.11", - "clsx": "^2.1.1", - "prop-types": "^15.8.1", - "react-transition-group": "^4.4.5" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.9.0", - "@emotion/styled": "^11.8.1", - "@mui/material": "^5.15.14 || ^6.0.0", - "@mui/system": "^5.15.14 || ^6.0.0", - "date-fns": "^2.25.0 || ^3.2.0 || ^4.0.0", - "date-fns-jalali": "^2.13.0-0 || ^3.2.0-0", - "dayjs": "^1.10.7", - "luxon": "^3.0.2", - "moment": "^2.29.4", - "moment-hijri": "^2.1.2 || ^3.0.0", - "moment-jalaali": "^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, - "date-fns": { - "optional": true - }, - "date-fns-jalali": { - "optional": true - }, - "dayjs": { - "optional": true - }, - "luxon": { - "optional": true - }, - "moment": { - "optional": true - }, - "moment-hijri": { - "optional": true - }, - "moment-jalaali": { - "optional": true - } - } - }, "node_modules/@mui/x-internals": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-7.21.0.tgz", - "integrity": "sha512-94YNyZ0BhK5Z+Tkr90RKf47IVCW8R/1MvdUhh6MCQg6sZa74jsX+x+gEZ4kzuCqOsuyTyxikeQ8vVuCIQiP7UQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-7.23.0.tgz", + "integrity": "sha512-bPclKpqUiJYIHqmTxSzMVZi6MH51cQsn5U+8jskaTlo3J4QiMeCYJn/gn7YbeR9GOZFp8hetyHjoQoVHKRXCig==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.7", @@ -1589,7 +1607,7 @@ "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "react": "^17.0.0 || ^18.0.0" + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/@popperjs/core": { @@ -1854,111 +1872,76 @@ "peer": true }, "node_modules/@sentry-internal/browser-utils": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.39.0.tgz", - "integrity": "sha512-5jcO3os1aQIMNZptniMUCCkZ3KOvyUPSyrQeGB7NxhJoieIwmopo5qIXyeRLHu0htL7H7A1gPYln6Ji3d/KUUA==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.43.0.tgz", + "integrity": "sha512-5WhJZ3SA5sZVDBwOsChDd5JCzYcwBX7sEqBqEcm3pFru6TUihEnFIJmDIbreIyrQMwUhs3dTxnfnidgjr5z1Ag==", "license": "MIT", "dependencies": { - "@sentry/core": "8.39.0", - "@sentry/types": "8.39.0", - "@sentry/utils": "8.39.0" + "@sentry/core": "8.43.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/feedback": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.39.0.tgz", - "integrity": "sha512-V5J/tnzAK8bXdXQzY7lnlYMqfTKgI+9BD7L7oHxQnDUzlShsV14xFGZVhEbPsjYficdIN9wpoYIyWDxwrFX1Qg==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.43.0.tgz", + "integrity": "sha512-rcGR2kzFu4vLXBQbI9eGJwjyToyjl36O2q/UKbiZBNJ5IFtDvKRLke6jIHq/YqiHPfFGpVtq5M/lYduDfA/eaQ==", "license": "MIT", "dependencies": { - "@sentry/core": "8.39.0", - "@sentry/types": "8.39.0", - "@sentry/utils": "8.39.0" + "@sentry/core": "8.43.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.39.0.tgz", - "integrity": "sha512-1IEXhg2XuKC1hx/Pf5p2L7McKjQPfVOWyQhjNUH2mHWbpOyvc1BhZoZKCgbbspwOAVuvj4n40PvOVyjfzU5Yew==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.43.0.tgz", + "integrity": "sha512-geV5/zejLfGGwWHjylzrb1w8NI3U37GMG9/53nmv13FmTXUDF5XF2lh41KXFVYwvp7Ha4bd1FRQ9IU9YtBWskw==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "8.39.0", - "@sentry/core": "8.39.0", - "@sentry/types": "8.39.0", - "@sentry/utils": "8.39.0" + "@sentry-internal/browser-utils": "8.43.0", + "@sentry/core": "8.43.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.39.0.tgz", - "integrity": "sha512-NCp4E60SFfg9pXdMgcdpctYENFOvJ58UPGllGjO3xpYoMkd4DGZQp947Tgw9hATTCDnyYNIy5v/zYbDV4Wbw3w==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.43.0.tgz", + "integrity": "sha512-rL8G7E1GtozH8VNalRrBQNjYDJ5ChWS/vpQI5hUG11PZfvQFXEVatLvT3uO2l0xIlHm4idTsHOSLTe/usxnogQ==", "license": "MIT", "dependencies": { - "@sentry-internal/replay": "8.39.0", - "@sentry/core": "8.39.0", - "@sentry/types": "8.39.0", - "@sentry/utils": "8.39.0" + "@sentry-internal/replay": "8.43.0", + "@sentry/core": "8.43.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/browser": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.39.0.tgz", - "integrity": "sha512-Xpqh84MnqoFID0owbugTeq/3QXgNwc3EdHAN/HFUdxEAyJS4j7Wi1DIBXN+ZRzMYX3m2QHOAymCWjnFtv+H8WQ==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.43.0.tgz", + "integrity": "sha512-LGvLLnfmR8+AEgFmd7Q7KHiOTiV0P1Lvio2ENDELhEqJOIiICauttibVmig+AW02qg4kMeywvleMsUYaZv2RVA==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "8.39.0", - "@sentry-internal/feedback": "8.39.0", - "@sentry-internal/replay": "8.39.0", - "@sentry-internal/replay-canvas": "8.39.0", - "@sentry/core": "8.39.0", - "@sentry/types": "8.39.0", - "@sentry/utils": "8.39.0" + "@sentry-internal/browser-utils": "8.43.0", + "@sentry-internal/feedback": "8.43.0", + "@sentry-internal/replay": "8.43.0", + "@sentry-internal/replay-canvas": "8.43.0", + "@sentry/core": "8.43.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/core": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.39.0.tgz", - "integrity": "sha512-rg2mHtwdCaedqub7bd+ht08vZgtwPO7el5m5sPNeb7V75GcQwSziu6G02vGxCBCsAHpoFn1A+0JLEajaYzZI7w==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.43.0.tgz", + "integrity": "sha512-ktyovtjkTMNud+kC/XfqHVCoQKreIKgx/hgeRvzPwuPyd1t1KzYmRL3DBkbcWVnyOPpVTHn+RsEI1eRcVYHtvw==", "license": "MIT", - "dependencies": { - "@sentry/types": "8.39.0", - "@sentry/utils": "8.39.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/types": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.39.0.tgz", - "integrity": "sha512-/n1bGkbJcSLZQpzd1Oksi8LFAMbcO8j/d+N8mcXS74GuhGgkxQiEwHF2CKTz6SHt8J4hrlyzqIwVzCevUOxZ2Q==", - "license": "MIT", - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/utils": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.39.0.tgz", - "integrity": "sha512-pIBnr/cROds92CcYWBW3z1zFH4uJkMPL2AxEv/ZcLg/NTb1Okz/ZaDP+NMzUfzriYvFBOFk0wPk0h5sYx6Umqw==", - "license": "MIT", - "dependencies": { - "@sentry/types": "8.39.0" - }, "engines": { "node": ">=14.18" } @@ -2041,9 +2024,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "18.3.12", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", - "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", + "version": "18.3.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.14.tgz", + "integrity": "sha512-NzahNKvjNhVjuPBQ+2G7WlxstQ+47kXZNHlUvFakDViuIEfGY926GqhMueQFZ7woG+sPiQKlF36XfrIUVSUfFg==", "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -2051,12 +2034,12 @@ } }, "node_modules/@types/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.3.tgz", + "integrity": "sha512-uTYkxTLkYp41nq/ULXyXMtkNT1vu5fXJoqad6uTNCOGat5t9cLgF4vMNLBXsTOXpdOI44XzKPY1M5RRm0bQHuw==", "license": "MIT", - "dependencies": { - "@types/react": "*" + "peerDependencies": { + "@types/react": "^18.0.0" } }, "node_modules/@types/react-transition-group": { @@ -2153,9 +2136,9 @@ } }, "node_modules/axios": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", - "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -2306,23 +2289,7 @@ "color-string": "^1.6.0" } }, - "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/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/color/node_modules/color-convert": { + "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", @@ -2331,12 +2298,22 @@ "color-name": "1.1.3" } }, - "node_modules/color/node_modules/color-name": { + "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "license": "MIT" }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, "node_modules/colorspace": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", @@ -2365,6 +2342,12 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "license": "MIT" }, + "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/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", @@ -2382,9 +2365,9 @@ } }, "node_modules/cronstrue": { - "version": "2.51.0", - "resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-2.51.0.tgz", - "integrity": "sha512-7EG9VaZZ5SRbZ7m25dmP6xaS0qe9ay6wywMskFOU/lMDKa+3gZr2oeT5OUfXwRP/Bcj8wxdYJ65AHU70CI3tsw==", + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-2.52.0.tgz", + "integrity": "sha512-NKgHbWkSZXJUcaBHSsyzC8eegD6bBd4O0oCI6XMIJ+y4Bq3v4w7sY3wfWoKPuVlq9pQHRB6od0lmKpIqi8TlKA==", "license": "MIT", "bin": { "cronstrue": "bin/cli.js" @@ -2837,6 +2820,12 @@ "node": ">=10.17.0" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -2927,6 +2916,12 @@ "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/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3003,6 +2998,18 @@ "npm": ">=6" } }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, "node_modules/jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", @@ -3030,6 +3037,15 @@ "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", "license": "MIT" }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -3338,6 +3354,12 @@ "node": ">=6" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -3439,6 +3461,12 @@ "node": "^10 || ^12 || >=14" } }, + "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/promisify-child-process": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/promisify-child-process/-/promisify-child-process-4.1.2.tgz", @@ -3498,23 +3526,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-ace": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/react-ace/-/react-ace-12.0.0.tgz", - "integrity": "sha512-PstU6CSMfYIJknb4su2Fa0WgLXzq2ufQgR6fjcSWuGT1hGTHkBzuKw+SncV8PuLCdSJBJc1VehPhyeXlWByG/g==", - "license": "MIT", - "dependencies": { - "ace-builds": "^1.32.8", - "diff-match-patch": "^1.0.5", - "lodash.get": "^4.4.2", - "lodash.isequal": "^4.5.0", - "prop-types": "^15.8.1" - }, - "peerDependencies": { - "react": "^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/react-color": { "version": "2.19.3", "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz", @@ -3585,19 +3596,10 @@ "react": ">= 16.8 || 18.0.0" } }, - "node_modules/react-from-dom": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/react-from-dom/-/react-from-dom-0.7.3.tgz", - "integrity": "sha512-9IK6R7+eD1wOAMC2ZCrENev0eK1625cb7vX+cnnOR9LBRNbjKiaJk4ij2zQbcefEXTWjXFhA7CTO1cd8wMONnw==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/react-icons": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.3.0.tgz", - "integrity": "sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.4.0.tgz", + "integrity": "sha512-7eltJxgVt7X64oHh6wSWNwwbKTCtMfK35hcjvJS0yxEAhPM8oUKdS3+kqaW1vicIltw+kR2unHaa12S9pPALoQ==", "license": "MIT", "peerDependencies": { "react": "*" @@ -3615,6 +3617,15 @@ "react": "16.8 - 19" } }, + "node_modules/react-inlinesvg/node_modules/react-from-dom": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/react-from-dom/-/react-from-dom-0.7.3.tgz", + "integrity": "sha512-9IK6R7+eD1wOAMC2ZCrENev0eK1625cb7vX+cnnOR9LBRNbjKiaJk4ij2zQbcefEXTWjXFhA7CTO1cd8wMONnw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -3669,19 +3680,26 @@ } }, "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "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": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "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/readable-stream/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/readline": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", @@ -3873,6 +3891,12 @@ "license": "Apache-2.0", "optional": true }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3995,14 +4019,20 @@ } }, "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==", + "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.2.0" + "safe-buffer": "~5.1.0" } }, + "node_modules/string_decoder/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/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -4340,6 +4370,34 @@ "node": ">= 12.0.0" } }, + "node_modules/winston-transport/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/winston/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", diff --git a/src-admin/package.json b/src-admin/package.json index 357417f8..8631d0a2 100644 --- a/src-admin/package.json +++ b/src-admin/package.json @@ -6,17 +6,17 @@ "@rollup/rollup-linux-x64-gnu": "*" }, "dependencies": { - "@foxriver76/iob-component-lib": "^0.1.6", - "@iobroker/adapter-react-v5": "^7.4.2", - "@iobroker/dm-gui-components": "~7.4.2", + "@foxriver76/iob-component-lib": "^0.2.0", + "@iobroker/adapter-react-v5": "^7.4.4", + "@iobroker/dm-gui-components": "~7.4.4", "@iobroker/type-detector": "^4.1.0", - "@types/react-dom": "^18.3.1", + "@types/react-dom": "^18.3.3", "@types/uuid": "^10.0.0", "@vitejs/plugin-react": "^4.3.4", "qr-scanner": "^1.4.2", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-icons": "^5.3.0", + "react-icons": "^5.4.0", "react-qr-code": "^2.0.15", "uuid": "^11.0.3" }, @@ -51,4 +51,4 @@ } ] ] -} \ No newline at end of file +} diff --git a/src-admin/src/App.tsx b/src-admin/src/App.tsx index 59aa670a..71361d40 100644 --- a/src-admin/src/App.tsx +++ b/src-admin/src/App.tsx @@ -2,7 +2,17 @@ import { StyledEngineProvider, ThemeProvider } from '@mui/material/styles'; import React from 'react'; import { IconButton } from '@foxriver76/iob-component-lib'; -import { AppBar, Tab, Tabs, Tooltip } from '@mui/material'; +import { + AppBar, + Dialog, + DialogContent, + DialogContentText, + DialogTitle, + LinearProgress, + Tab, + Tabs, + Tooltip, +} from '@mui/material'; import { SignalCellularOff as IconNotAlive } from '@mui/icons-material'; @@ -15,7 +25,7 @@ import { type GenericAppState, type IobTheme, } from '@iobroker/adapter-react-v5'; -import { clone } from './Utils'; +import { clone, getText } from './Utils'; import ConfigHandler from './components/ConfigHandler'; import BridgesTab from './Tabs/Bridges'; @@ -83,6 +93,12 @@ interface AppState extends GenericAppState { /** Undefined if no detection ran yet */ detectedDevices?: DetectedRoom[]; ready: boolean; + progress: { + title?: ioBroker.StringOrTranslated; + text?: ioBroker.StringOrTranslated; + indeterminate?: boolean; + value?: number; + } | null; } class App extends GenericApp { @@ -138,6 +154,7 @@ class App extends GenericApp { devices: {}, }, ready: false, + progress: null, }); this.alert = window.alert; @@ -253,9 +270,11 @@ class App extends GenericApp { this.setState({ alive: true }); this.refreshBackendSubscription(true); } else if (!state?.val && this.state.alive) { - this.refreshTimer && clearTimeout(this.refreshTimer); - this.refreshTimer = null; - this.setState({ alive: false }); + if (this.refreshTimer) { + clearTimeout(this.refreshTimer); + this.refreshTimer = null; + } + this.setState({ alive: false, progress: null }); } }; @@ -264,7 +283,32 @@ class App extends GenericApp { return; } - if (update.command === 'bridgeStates') { + if (update.command === 'progress') { + if (update.progress) { + if (update.progress.close) { + if (this.state.progress) { + this.setState({ progress: null }); + } + } else { + const progress = { ...this.state.progress }; + if (update.progress.title !== undefined) { + progress.title = update.progress.title; + } + if (update.progress.value !== undefined) { + progress.value = update.progress.value; + } + if (update.progress.text !== undefined) { + progress.text = update.progress.text; + } + if (update.progress.indeterminate !== undefined) { + progress.indeterminate = update.progress.indeterminate; + } + this.setState({ progress }); + } + } else if (this.state.progress) { + this.setState({ progress: null }); + } + } else if (update.command === 'bridgeStates') { // all states at once const nodeStates: { [uuid: string]: NodeStateResponse } = {}; if (update.states) { @@ -420,6 +464,7 @@ class App extends GenericApp { this.setState({ nodeStates: _nodeStates }); }} nodeStates={this.state.nodeStates} + themeName={this.state.themeName} themeType={this.state.themeType} theme={this.state.theme} detectedDevices={this.state.detectedDevices} @@ -454,6 +499,7 @@ class App extends GenericApp { nodeStates={this.state.nodeStates} commissioning={this.state.commissioning?.devices || {}} socket={this.socket} + themeName={this.state.themeName} themeType={this.state.themeType} theme={this.state.theme} detectedDevices={this.state.detectedDevices} @@ -538,6 +584,31 @@ class App extends GenericApp { } } + renderProgressDialog(): React.JSX.Element | null { + if (!this.state.progress) { + return null; + } + + return ( + {}} + maxWidth="md" + > + {this.state.progress.title ? {getText(this.state.progress.title)} : null} + + + {this.state.progress.text ? ( + {getText(this.state.progress.text)} + ) : null} + + + ); + } + render(): React.JSX.Element { if (!this.state.ready) { return ( @@ -553,6 +624,7 @@ class App extends GenericApp { {this.renderToast()} + {this.renderProgressDialog()}
{ private bridgeIndex: number | null = null; + protected readonly isDevice = false; constructor(props: BridgesProps) { super(props); @@ -711,7 +712,7 @@ export class Bridges extends BridgesAndDevices { onChange={e => this.setState({ suppressDeleteEnabled: e.target.checked })} /> } - label={I18n.t('Suppress question for 2 minutes')} + label={I18n.t('Suppress question for 5 minutes')} /> @@ -731,7 +732,7 @@ export class Bridges extends BridgesAndDevices { this.setState( { deleteDialog: null, - suppressDeleteTime: this.state.suppressDeleteEnabled ? Date.now() + 120_000 : 0, + suppressDeleteTime: this.state.suppressDeleteEnabled ? Date.now() + 300_000 : 0, }, () => this.props.updateConfig(matter), ); @@ -1323,7 +1324,13 @@ export class Bridges extends BridgesAndDevices { > { e.stopPropagation(); @@ -1451,7 +1458,15 @@ export class Bridges extends BridgesAndDevices { {this.renderQrCodeDialog()} {this.renderDebugDialog()} {this.renderResetDialog()} - {I18n.t('Matter Bridges Infotext')} + {this.renderJsonConfigDialog()} + + {I18n.t('Matter Bridges Infotext')} + = { vendorIcon: { @@ -68,6 +82,7 @@ export interface BridgesAndDevicesProps { socket: AdminConnection; theme: IobTheme; themeType: ThemeType; + themeName: ThemeName; updateConfig: (config: MatterConfig) => void; updateNodeStates: (states: { [uuid: string]: NodeStateResponse }) => void; } @@ -79,12 +94,21 @@ export interface BridgesAndDevicesState { step: number; } | null; showDebugData: DeviceDescription | BridgeDescription | null; + jsonConfig: { + schema: ConfigItemPanel | ConfigItemTabs; + options?: BackEndCommandJsonFormOptions; + changed: boolean; + data: Record; + } | null; } class BridgesAndDevices extends Component< TProps, TState > { + // eslint-disable-next-line react/no-unused-class-component-methods + protected isDevice: boolean; + constructor(props: TProps) { super(props); @@ -92,6 +116,7 @@ class BridgesAndDevices + ); + } if (VendorIdsAmazon.includes(vendorId)) { // AmazonLab126 return ( @@ -170,12 +206,15 @@ class BridgesAndDevices; } @@ -206,29 +245,99 @@ class BridgesAndDevices; } - renderStatus(deviceOrBridge: DeviceDescription | BridgeDescription): React.ReactNode { + requestAdditionalInformation(uuid: string): void { + this.props.socket + .sendTo(`matter.${this.props.instance}`, 'extendedInfo', { + uuid, + error: this.props.nodeStates[uuid]?.error, + }) + .then((result: { schema: JsonFormSchema; options?: BackEndCommandJsonFormOptions }): void => { + this.setState({ + jsonConfig: { + schema: result.schema, + options: result.options, + changed: false, + data: result.options?.data || {}, + }, + }); + }) + .catch(e => this.props.showToast(`Cannot reset: ${e}`)); + } + + renderStatus( + deviceOrBridge: DeviceDescription | BridgeDescription, + ): [React.JSX.Element | null, React.JSX.Element | null, React.JSX.Element | null] { if (!this.props.nodeStates[deviceOrBridge.uuid] || !deviceOrBridge.enabled) { - return null; + return [null, null, null]; } - if (this.props.nodeStates[deviceOrBridge.uuid].status === 'waitingForCommissioning') { - return ( - + { + this.reAnnounceDevice(deviceOrBridge.uuid).catch(e => window.alert(`Cannot re-announce: ${e}`)); + this.setState({ showQrCode: deviceOrBridge }); + }} > - this.setState({ showQrCode: deviceOrBridge })} - > - - - - ); + + + + ) : null; + + if (qrCode) { + result[2] = qrCode; + } + + const extendedInfo = ( + + this.requestAdditionalInformation(deviceOrBridge.uuid)} + > + {this.props.nodeStates[deviceOrBridge.uuid].error ? : } + + + ); + + if (qrCode) { + result[2] = extendedInfo; } if (this.props.nodeStates[deviceOrBridge.uuid].status) { - return ( + result[0] = ( @@ -242,12 +351,14 @@ class BridgesAndDevices ); } - return null; + + return result; } renderDebugDialog(): React.JSX.Element | null { @@ -293,8 +404,11 @@ class BridgesAndDevices ( - {BridgesAndDevices.getVendorIcon(info.vendorId, this.props.themeType) || - BridgesAndDevices.getVendorName(info.vendorId)} + {BridgesAndDevices.getVendorIcon( + info.vendorId, + info.vendorName, + this.props.themeType, + ) || BridgesAndDevices.getVendorName(info.vendorId)} {info.label ? ( ): void { + this.setState({ jsonConfig: null }); + } + + getOkButton(button?: ActionButton | 'apply' | 'cancel'): React.JSX.Element { + if (typeof button === 'string') { + button = undefined; + } + return ( + + ); + } + + getCancelButton(button?: ActionButton | 'apply' | 'cancel' | 'close'): React.JSX.Element { + let isClose = false; + if (typeof button === 'string') { + isClose = button === 'close'; + button = undefined; + } + return ( + + ); + } + + renderJsonConfigDialog(): React.JSX.Element | null { + if (!this.state.jsonConfig) { + return null; + } + + let buttons: React.JSX.Element[]; + if (this.state.jsonConfig.options?.buttons) { + buttons = []; + this.state.jsonConfig.options.buttons.forEach((button: ActionButton | 'apply' | 'cancel'): void => { + if (button === 'apply' || (button as ActionButton).type === 'apply') { + buttons.push(this.getOkButton(button)); + } else { + buttons.push(this.getCancelButton(button)); + } + }); + } else { + buttons = [this.getOkButton(), this.getCancelButton()]; + } + + return ( + this.setState({ showDebugData: null })} + open={!0} + maxWidth={this.state.jsonConfig.options?.maxWidth || 'md'} + fullWidth + > + {this.state.jsonConfig.options?.title ? ( + + {getTranslation( + this.state.jsonConfig.options.title, + this.state.jsonConfig.options.noTranslation, + )} + + ) : null} + + { + // ignored + }} + onChange={(_data: Record) => { + // ignored + }} + embedded + themeName={this.props.themeName} + themeType={this.props.themeType} + theme={this.props.theme} + isFloatComma={!!this.props.socket.systemConfig?.common.isFloatComma} + dateFormat={this.props.socket.systemConfig?.common.dateFormat as string} + /> + + {buttons} + + ); + } + + async reAnnounceDevice(uuid: string): Promise { + const result = await this.props.socket.sendTo(`matter.${this.props.instance}`, 'deviceReAnnounce', { + uuid, + }); + + if (result.error) { + window.alert(`Cannot re-announce: ${result.error}`); + } else { + this.props.showToast(I18n.t('Successfully re-announced')); + this.props.updateNodeStates({ + [uuid]: result.result, + }); + } + } + /** * Render the QR code dialog for pairing */ @@ -374,7 +605,12 @@ class BridgesAndDevices {I18n.t('QR Code to connect')} - + {I18n.t( 'Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.', )} @@ -411,24 +647,7 @@ class BridgesAndDevices
- {this.renderStatus(device)} + {this.renderStatus(device).map((button, i) => ( + + {button} + + ))} { {this.renderDebugDialog()} {this.renderQrCodeDialog()} {this.renderResetDialog()} - + {this.renderJsonConfigDialog()} + {I18n.t( 'Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.', )} diff --git a/src-admin/src/Tabs/Options.tsx b/src-admin/src/Tabs/Options.tsx index e2972c40..ca1a4167 100644 --- a/src-admin/src/Tabs/Options.tsx +++ b/src-admin/src/Tabs/Options.tsx @@ -21,7 +21,7 @@ import { Check, Close, LayersClear } from '@mui/icons-material'; import { type AdminConnection, I18n, Logo } from '@iobroker/adapter-react-v5'; -import { InfoBox } from '@foxriver76/iob-component-lib'; +import InfoBox from '../components/InfoBox'; import type { MatterAdapterConfig, MatterConfig } from '../types'; const styles: Record = { diff --git a/src-admin/src/Utils.tsx b/src-admin/src/Utils.tsx index e8d24e68..437dc487 100644 --- a/src-admin/src/Utils.tsx +++ b/src-admin/src/Utils.tsx @@ -301,10 +301,28 @@ export async function detectDevices( return result; } +/** + * Get text from object or just a string without trying to translate it + */ export function getText(text?: ioBroker.StringOrTranslated): string { return typeof text === 'object' ? text?.[I18n.getLanguage()] || '' : text || ''; } +/** + * Get Translation and try to translate given string + */ +export function getTranslation( + /** Text to translate */ + text: ioBroker.StringOrTranslated, + noTranslation?: boolean, +): string { + if (typeof text === 'object') { + return text[I18n.getLanguage()] || text.en; + } + + return noTranslation ? text : I18n.t(text); +} + /** * Clone an object * diff --git a/src-admin/src/assets/ioBroker.svg b/src-admin/src/assets/ioBroker.svg new file mode 100644 index 00000000..50d4fce3 --- /dev/null +++ b/src-admin/src/assets/ioBroker.svg @@ -0,0 +1,9 @@ + + + + + diff --git a/src-admin/src/components/InfoBox.tsx b/src-admin/src/components/InfoBox.tsx new file mode 100644 index 00000000..e1ae8577 --- /dev/null +++ b/src-admin/src/components/InfoBox.tsx @@ -0,0 +1,155 @@ +import React from 'react'; +import { Box, Typography } from '@mui/material'; +import { Info, Warning, Close, Visibility, type SvgIconComponent } from '@mui/icons-material'; + +interface InfoBoxProps { + /** Text to display in the info box */ + children: string; + /** The type determines the color and symbol */ + type: 'warning' | 'info' | 'error'; + /** If the Box is closeable */ + closeable?: boolean; + /** Use together with `closeable: true`. You can specify in which variable in local storage the state of this info box could be stored */ + storeId?: string; + /** Use together with `closeable: true`, listener called if close button clicked */ + onClose?: (desiredState: boolean) => void; + /** Custom style */ + style?: React.CSSProperties; + /** Icon position */ + iconPosition?: 'top' | 'middle'; + /** Use together with `closeable: true`. If the box is closed or not. In this case it will be controlled from outside */ + closed?: boolean; +} + +interface InfoBoxState { + closed: boolean; +} +/** + * This component can be used to show important information or warnings to the user + */ +export default class InfoBox extends React.Component { + private readonly refTypo: React.RefObject; + private height: number; + private width: number; + + constructor(props: InfoBoxProps) { + super(props); + this.state = { + closed: this.props.storeId ? window.localStorage.getItem(this.props.storeId) === 'true' : false, + }; + this.height = 0; + this.width = 0; + + this.refTypo = React.createRef(); + } + + componentDidMount(): void { + this.detectHeight(); + } + + onClick(): void { + if (this.props.storeId && this.props.closed === undefined) { + if (this.state.closed) { + window.localStorage.removeItem(this.props.storeId); + } else { + window.localStorage.setItem(this.props.storeId, 'true'); + } + } + if (this.props.closed === undefined) { + this.setState({ closed: !this.state.closed }, () => { + // Inform about state change + if (this.props.onClose) { + this.props.onClose(this.state.closed); + } + }); + } else if (this.props.onClose) { + this.props.onClose(!this.props.closed); + } + } + + detectHeight(): void { + const closed = this.props.closed !== undefined ? this.props.closed : this.state.closed; + // We must get the height of the element when it is open to make transition + if (this.props.closeable && !closed && this.refTypo.current) { + window.requestAnimationFrame(() => { + const closed = this.props.closed !== undefined ? this.props.closed : this.state.closed; + if (closed) { + return; + } + if (this.refTypo.current && (!this.height || this.width !== this.refTypo.current.clientWidth)) { + this.height = this.refTypo.current.clientHeight; + this.width = this.refTypo.current.clientWidth; + this.forceUpdate(); + } + }); + } + } + + componentDidUpdate(): void { + this.detectHeight(); + } + + render(): React.ReactNode { + const closed = this.props.closed !== undefined ? this.props.closed : this.state.closed; + + const Icon: SvgIconComponent = closed ? Visibility : Close; + + return ( + theme.palette[this.props.type].main }} + > + {this.props.type === 'info' ? : } + {this.props.children} + {this.props.closeable ? ( + (theme.palette.mode === 'dark' ? 'lightgray' : 'gray'), + // alignSelf: 'flex-start', + cursor: 'pointer', + position: 'absolute', + top: 4, + right: 4, + }} + onClick={() => this.onClick()} + /> + ) : null} + {/* Reserve place for button so it will not overlap the text */} + {this.props.closeable ?
: null} + {closed ? ( + ({ + background: `linear-gradient(${theme.palette[this.props.type].main}00 0%, ${theme.palette[this.props.type].main}10 60%, ${theme.palette[this.props.type].main}90 100%)`, + })} + style={{ + bottom: 0, + position: 'absolute', + left: 0, + right: 0, + height: 10, + }} + /> + ) : null} + + ); + } +} diff --git a/src-admin/src/globals.d.ts b/src-admin/src/globals.d.ts new file mode 100644 index 00000000..72d9c0d6 --- /dev/null +++ b/src-admin/src/globals.d.ts @@ -0,0 +1,13 @@ +declare global { + declare module '*.svg'; + declare module '*.png'; + declare module '*.jpg'; + + declare module '@mui/material/Button' { + interface ButtonPropsColorOverrides { + grey: true; + } + } +} + +export {}; diff --git a/src-admin/src/i18n/de.json b/src-admin/src/i18n/de.json index 91ddd024..f46fcbd4 100644 --- a/src-admin/src/i18n/de.json +++ b/src-admin/src/i18n/de.json @@ -13,6 +13,7 @@ "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "Zusätzlich zu Bridges können Sie ioBroker-Zustände auch als eigenständige Matter-Geräte verfügbar machen.\nSie können alle einzeln gepaart werden.\nSie sollten vorzugsweise Bridges verwenden.", "All": "Alle", "All devices": "Alle Geräte", + "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Alle Informationen dieses Geräts oder dieser Bridge werden gelöscht und Sie müssen die Verbindung (mit PIN oder QR-Code) erneut herstellen.", "All interfaces": "Alle Schnittstellen", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Der Controller und alle Geräte und Bridges werden auf die Werkseinstellungen zurückgesetzt. \nDadurch werden die Pairing- und aktuellen Werte für alle Geräte, Bridges und auch gepaarten Geräte im Controller gelöscht. Sie können dies nicht rückgängig machen.\nDie allgemeine Konfiguration des Controllers und die zugewiesenen ioBroker-Zustände für die Bridges und Geräte bleiben unverändert.", "Apply": "Anwenden", @@ -48,7 +49,6 @@ "Device is already commissioning. Show status information": "Gerät wird bereits in Betrieb genommen. Statusinformationen anzeigen", "Device is not commissioned. Show QR Code for commissioning": "Gerät ist nicht in Betrieb genommen. QR-Code zur Inbetriebnahme anzeigen", "Device names": "Gerätenamen", - "Device or bridge will lost all commissioning information and you must reconnect (with PIN or QR code) again.": "Beim Gerät oder der Bridge gehen alle Inbetriebnahmeinformationen verloren und Sie müssen die Verbindung (mit PIN oder QR-Code) erneut herstellen.", "Device type": "Gerätetyp", "Device type \"%s\" is not supported yet": "Der Gerätetyp „%s“ wird noch nicht unterstützt", "Devices": "Geräte", @@ -63,7 +63,7 @@ "Edit device": "Gerät bearbeiten", "Enable": "Aktivieren", "Enable device": "Gerät aktivieren", - "Enable enhanced debug logging for the Matter protocol": "Erweitertes Debug-Logging für das Matter-Protokoll aktivieren", + "Enable enhanced debug logging for the Matter protocol": "Erweitertes Debug-Logging für das Matter-Protokoll aktivieren (nur sichtbar mit der Protokollebene „Debug“)", "Enable/disable bridge": "Bridge aktivieren/deaktivieren", "Expand all": "Alle erweitern", "General": "Allgemein", @@ -99,6 +99,7 @@ "Provide your Thread or WiFi information or both!": "Geben Sie Ihre Thread- oder WiFi-Informationen oder beides an!", "QR Code": "QR-Code", "QR Code to connect": "QR-Code zum Verbinden", + "Re-Announce": "Re-announce", "Reconnect to backend": "Erneute Verbindung zum Backend herstellen", "Required": "Erforderlich", "Reset": "Zurücksetzen", @@ -111,13 +112,17 @@ "Save": "Speichern", "Select default bridge": "Standard-Bridge auswählen", "Select/Unselect all devices in room": "Alle Geräte im Raum auswählen/abwählen", + "Show QR Code for commissioning": "QR-Code zur Inbetriebnahme anzeigen", + "Show additional information": "Weitere Informationen anzeigen", + "Show error": "Fehler anzeigen", "Show unsupported devices": "Nicht unterstützte Geräte anzeigen", "Status": "Status", "Stop": "Stoppen", "Successfully re-announced": "Erfolgreich neu ausgeschrieben!", - "Suppress question for 2 minutes": "Frage 2 Minuten lang unterdrücken", + "Suppress question for 5 minutes": "Frage 5 Minuten lang unterdrücken", "Sync credentials with %s": "Anmeldeinformationen mit %s synchronisieren", "This cannot be undone!": "Das kann nicht rückgängig gemacht werden!", + "This device/bridge is linked to some ecosystem. If it is deleted here, you must manually remove it from your ecosystem!": "Dieses Gerät/diese Bridge ist mit einem Ökosystem verknüpft. Wenn es/sie hier gelöscht wird, müssen Sie es/sie manuell aus Ihrem Ökosystem entfernen!", "Thread credentials": "Thread-Anmeldeinformationen", "Thread network name": "Thread-Network-Name", "Thread operational dataset": "Thread operational dataset", @@ -132,6 +137,7 @@ "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "Sie benötigen den ioBroker.pro-Assistenten oder ein Remote-Abonnement, um mehr als 5 Geräte in Bridge zu haben", "You need to configure WLAN or Thread credentials above to activate BLE": "Sie müssen oben die WLAN- oder Thread-Anmeldeinformationen konfigurieren, um BLE zu aktivieren!", "blind": "Blind", + "cancelButtonText": "Abbrechen", "dimmer": "Dimmer", "door": "Tür", "fireAlarm": "Feueralarm", @@ -145,6 +151,7 @@ "media": "Medien", "motion": "Bewegung", "no IPv6": "kein IPv6", + "okButtonText": "OK", "rgbSingle": "RGB-Licht", "slider": "Schieberegler", "socket": "Steckdose", @@ -163,4 +170,4 @@ "weatherForecast": "Wettervorhersage", "window": "Fenster", "windowTilt": "Gekipptes Fenster" -} \ No newline at end of file +} diff --git a/src-admin/src/i18n/en.json b/src-admin/src/i18n/en.json index 688a7198..bd8f4f1b 100644 --- a/src-admin/src/i18n/en.json +++ b/src-admin/src/i18n/en.json @@ -13,6 +13,7 @@ "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "Additionally to bridges you can also expose ioBroker states as stand alone matter devices.\nThey can all be paired individually.\nYou should prefer to use bridges.", "All": "All", "All devices": "All devices", + "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.", "All interfaces": "All interfaces", "All state information of matter controller and devices will be deleted. You cannot undo it.": "The Controller and all devices and bridges will be rest to factory defaults. \nThis deletes the pairing and current values for all devices, bridges and also paired devices in the controller. You cannot undo it.\nThe general configuration of the controller, and the assigned ioBroker states for the bridges and devices will stay unchanged.", "Apply": "Apply", @@ -48,7 +49,6 @@ "Device is already commissioning. Show status information": "Device is already commissioning. Show status information", "Device is not commissioned. Show QR Code for commissioning": "Device is not commissioned. Show QR Code for commissioninn", "Device names": "Device names", - "Device or bridge will lost all commissioning information and you must reconnect (with PIN or QR code) again.": "Device or bridge will lost all commissioning information and you must reconnect (with PIN or QR code) again.", "Device type": "Device type", "Device type \"%s\" is not supported yet": "Device type \"%s\" is not supported yet", "Devices": "Devices", @@ -63,7 +63,7 @@ "Edit device": "Edit device", "Enable": "Enable", "Enable device": "Enable device", - "Enable enhanced debug logging for the Matter protocol": "Enable enhanced debug logging for the Matter protocol", + "Enable enhanced debug logging for the Matter protocol": "Enable enhanced debug logging for the Matter protocol (only visible with \"debug\" log level)", "Enable/disable bridge": "Enable/disable bridge", "Expand all": "Expand all", "General": "General", @@ -99,6 +99,7 @@ "Provide your Thread or WiFi information or both!": "Provide your Thread or WiFi information or both!", "QR Code": "QR Code", "QR Code to connect": "QR Code to connect", + "Re-Announce": "Re-announce", "Reconnect to backend": "Reconnect to backend", "Required": "Required", "Reset": "Reset", @@ -111,13 +112,17 @@ "Save": "Save", "Select default bridge": "Select default bridge", "Select/Unselect all devices in room": "Select/Unselect all devices in room", + "Show QR Code for commissioning": "Show QR Code for commissioning", + "Show additional information": "Show additional information", + "Show error": "Show error", "Show unsupported devices": "Show unsupported devices", "Status": "Status", "Stop": "Stop", "Successfully re-announced": "Successfully re-announced!", - "Suppress question for 2 minutes": "Suppress question for 2 minutes", + "Suppress question for 5 minutes": "Suppress question for 5 minutes", "Sync credentials with %s": "Sync credentials with %s", "This cannot be undone!": "This cannot be undone!", + "This device/bridge is linked to some ecosystem. If it is deleted here, you must manually remove it from your ecosystem!": "This device/bridge is linked to some ecosystem. If it is deleted here, you must manually remove it from your ecosystem!", "Thread credentials": "Thread credentials", "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", @@ -132,6 +137,7 @@ "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge", "You need to configure WLAN or Thread credentials above to activate BLE": "You need to configure WLAN or Thread credentials above to activate BLE!", "blind": "Blind", + "cancelButtonText": "Cancel", "dimmer": "Dimmer", "door": "Door", "fireAlarm": "Fire alarm", @@ -145,6 +151,7 @@ "media": "Media", "motion": "Motion", "no IPv6": "no IPv6", + "okButtonText": "Ok", "rgbSingle": "RGB Light", "slider": "Slider", "socket": "Socket", @@ -163,4 +170,4 @@ "weatherForecast": "Weather forecast", "window": "Window", "windowTilt": "Tilted window" -} \ No newline at end of file +} diff --git a/src-admin/src/i18n/es.json b/src-admin/src/i18n/es.json index 349b7e37..3ccb022c 100644 --- a/src-admin/src/i18n/es.json +++ b/src-admin/src/i18n/es.json @@ -13,6 +13,7 @@ "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "Además de los puentes, también puede exponer los estados de ioBroker como dispositivos independientes.\nTodos ellos se pueden emparejar individualmente.\nDeberías preferir utilizar puentes.", "All": "Todo", "All devices": "Todos los dispositivos", + "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Se eliminará toda la información de este dispositivo o puente y deberás volver a conectarte (con PIN o código QR) nuevamente.", "All interfaces": "Todas las interfaces", "All state information of matter controller and devices will be deleted. You cannot undo it.": "El controlador y todos los dispositivos y puentes volverán a los valores predeterminados de fábrica. \nEsto elimina el emparejamiento y los valores actuales de todos los dispositivos, puentes y también los dispositivos emparejados en el controlador. No puedes deshacerlo.\nLa configuración general del controlador y los estados de ioBroker asignados para los puentes y dispositivos permanecerán sin cambios.", "Apply": "Aplicar", @@ -48,7 +49,6 @@ "Device is already commissioning. Show status information": "El dispositivo ya se está poniendo en marcha. Mostrar información de estado", "Device is not commissioned. Show QR Code for commissioning": "El dispositivo no está en servicio. Mostrar código QR para commissioninn", "Device names": "Nombres de dispositivos", - "Device or bridge will lost all commissioning information and you must reconnect (with PIN or QR code) again.": "El dispositivo o puente perderá toda la información de puesta en servicio y deberá volver a conectarse (con PIN o código QR).", "Device type": "Tipo de dispositivo", "Device type \"%s\" is not supported yet": "El tipo de dispositivo \"%s\" aún no es compatible", "Devices": "Dispositivos", @@ -63,7 +63,7 @@ "Edit device": "Editar dispositivo", "Enable": "Permitir", "Enable device": "Habilitar dispositivo", - "Enable enhanced debug logging for the Matter protocol": "Habilite el registro de depuración mejorado para el protocolo Matter", + "Enable enhanced debug logging for the Matter protocol": "Habilitar el registro de depuración mejorado para el protocolo Matter (solo visible con el nivel de registro \"depuración\")", "Enable/disable bridge": "Activar/desactivar puente", "Expand all": "Expandir todo", "General": "General", @@ -99,6 +99,7 @@ "Provide your Thread or WiFi information or both!": "¡Proporcione su información de Thread o WiFi o ambas!", "QR Code": "Código QR", "QR Code to connect": "Código QR para conectarse", + "Re-Announce": "Re-announce", "Reconnect to backend": "Reconectarse al backend", "Required": "Requerido", "Reset": "Reiniciar", @@ -111,13 +112,17 @@ "Save": "Ahorrar", "Select default bridge": "Seleccionar puente predeterminado", "Select/Unselect all devices in room": "Seleccionar/deseleccionar todos los dispositivos en la habitación", + "Show QR Code for commissioning": "Mostrar código QR para puesta en servicio", + "Show additional information": "Mostrar información adicional", + "Show error": "Mostrar error", "Show unsupported devices": "Mostrar dispositivos no compatibles", "Status": "Estado", "Stop": "Detener", "Successfully re-announced": "¡Reanunciado con éxito!", - "Suppress question for 2 minutes": "Suprimir pregunta durante 2 minutos", + "Suppress question for 5 minutes": "Suprimir pregunta durante 5 minutos", "Sync credentials with %s": "Sincronizar credenciales con %s", "This cannot be undone!": "¡Esto no se puede deshacer!", + "This device/bridge is linked to some ecosystem. If it is deleted here, you must manually remove it from your ecosystem!": "Este dispositivo/puente está vinculado a algún ecosistema. Si se elimina aquí, deberás eliminarlo manualmente de tu ecosistema.", "Thread credentials": "Credenciales del hilo", "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", @@ -132,6 +137,7 @@ "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "Necesita el asistente ioBroker.pro o una suscripción remota para tener más de 5 dispositivos en puente", "You need to configure WLAN or Thread credentials above to activate BLE": "¡Necesita configurar las credenciales de WLAN o Thread arriba para activar BLE!", "blind": "Ciego", + "cancelButtonText": "Cancelar", "dimmer": "Regulador de intensidad", "door": "Puerta", "fireAlarm": "Alarma de incendios", @@ -145,6 +151,7 @@ "media": "Medios de comunicación", "motion": "Movimiento", "no IPv6": "Sin IPv6", + "okButtonText": "De acuerdo", "rgbSingle": "Luz RGB", "slider": "Control deslizante", "socket": "Enchufe", @@ -163,4 +170,4 @@ "weatherForecast": "Pronóstico del tiempo", "window": "Ventana", "windowTilt": "ventana inclinada" -} \ No newline at end of file +} diff --git a/src-admin/src/i18n/fr.json b/src-admin/src/i18n/fr.json index fbf33d7e..82bfae0b 100644 --- a/src-admin/src/i18n/fr.json +++ b/src-admin/src/i18n/fr.json @@ -13,6 +13,7 @@ "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "En plus des ponts, vous pouvez également exposer les états ioBroker en tant que dispositifs autonomes.\nIls peuvent tous être jumelés individuellement.\nVous devriez préférer utiliser des ponts.", "All": "Tous", "All devices": "Tous les dispositifs", + "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Toutes les informations de cet appareil ou pont seront supprimées et vous devrez vous reconnecter (avec code PIN ou QR) à nouveau.", "All interfaces": "Toutes les interfaces", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Le contrôleur et tous les appareils et ponts seront restaurés aux paramètres d'usine par défaut. \nCela supprime les valeurs d'appariement et de courant pour tous les appareils, ponts ainsi que les appareils appairés dans le contrôleur. Vous ne pouvez pas l'annuler.\nLa configuration générale du contrôleur et les états ioBroker attribués aux ponts et aux appareils resteront inchangés.", "Apply": "Appliquer", @@ -48,7 +49,6 @@ "Device is already commissioning. Show status information": "L'appareil est déjà en cours de mise en service. Afficher les informations d'état", "Device is not commissioned. Show QR Code for commissioning": "L'appareil n'est pas mis en service. Afficher le code QR pour la mise en service", "Device names": "Noms des appareils", - "Device or bridge will lost all commissioning information and you must reconnect (with PIN or QR code) again.": "L'appareil ou le pont perdra toutes les informations de mise en service et vous devrez vous reconnecter (avec code PIN ou QR code).", "Device type": "Type d'appareil", "Device type \"%s\" is not supported yet": "Le type de périphérique « %s » n'est pas encore pris en charge", "Devices": "Dispositifs", @@ -63,7 +63,7 @@ "Edit device": "Modifier l'appareil", "Enable": "Activer", "Enable device": "Activer l'appareil", - "Enable enhanced debug logging for the Matter protocol": "Activer la journalisation de débogage améliorée pour le protocole Matter", + "Enable enhanced debug logging for the Matter protocol": "Activer la journalisation de débogage améliorée pour le protocole Matter (visible uniquement avec le niveau de journalisation « debug »)", "Enable/disable bridge": "Activer/désactiver le pont", "Expand all": "Développer tout", "General": "Général", @@ -99,6 +99,7 @@ "Provide your Thread or WiFi information or both!": "Fournissez vos informations Thread ou WiFi, ou les deux !", "QR Code": "Code QR", "QR Code to connect": "QR Code pour se connecter", + "Re-Announce": "Re-announce", "Reconnect to backend": "Se reconnecter au backend", "Required": "Requis", "Reset": "Réinitialiser", @@ -111,13 +112,17 @@ "Save": "Sauvegarder", "Select default bridge": "Sélectionnez le pont par défaut", "Select/Unselect all devices in room": "Sélectionner/Désélectionner tous les appareils de la pièce", + "Show QR Code for commissioning": "Afficher le code QR pour la mise en service", + "Show additional information": "Afficher des informations supplémentaires", + "Show error": "Afficher l'erreur", "Show unsupported devices": "Afficher les appareils non pris en charge", "Status": "Statut", "Stop": "Arrêt", - "Successfully re-announced": "Ré-annoncé avec succès !", - "Suppress question for 2 minutes": "Supprimer la question pendant 2 minutes", + "Successfully re-announced": "Ré-annoncé avec succès !", + "Suppress question for 5 minutes": "Supprimer la question pendant 5 minutes", "Sync credentials with %s": "Synchroniser les identifiants avec %s", "This cannot be undone!": "Ça ne peut pas être annulé!", + "This device/bridge is linked to some ecosystem. If it is deleted here, you must manually remove it from your ecosystem!": "Cet appareil/pont est lié à un écosystème. S'il est supprimé ici, vous devez le supprimer manuellement de votre écosystème !", "Thread credentials": "Informations d'identification du fil de discussion", "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", @@ -130,8 +135,9 @@ "WiFi SSID": "SSID Wi-Fi", "WiFi password": "Mot de passe WiFi", "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "Vous avez besoin de l'assistant ioBroker.pro ou d'un abonnement à distance pour avoir plus de 5 appareils en pont", - "You need to configure WLAN or Thread credentials above to activate BLE": "Vous devez configurer les informations d'identification WLAN ou Thread ci-dessus pour activer BLE !", + "You need to configure WLAN or Thread credentials above to activate BLE": "Vous devez configurer les informations d'identification WLAN ou Thread ci-dessus pour activer BLE !", "blind": "Aveugle", + "cancelButtonText": "Annuler", "dimmer": "Variateur", "door": "Porte", "fireAlarm": "Alarme incendie", @@ -145,6 +151,7 @@ "media": "Médias", "motion": "Mouvement", "no IPv6": "pas d'IPv6", + "okButtonText": "D'accord", "rgbSingle": "Lumière RVB", "slider": "Glissière", "socket": "Prise", @@ -163,4 +170,4 @@ "weatherForecast": "Prévisions météorologiques", "window": "Fenêtre", "windowTilt": "Fenêtre inclinée" -} \ No newline at end of file +} diff --git a/src-admin/src/i18n/it.json b/src-admin/src/i18n/it.json index fd015dfe..97748bd5 100644 --- a/src-admin/src/i18n/it.json +++ b/src-admin/src/i18n/it.json @@ -13,6 +13,7 @@ "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "Oltre ai bridge puoi anche esporre gli stati di ioBroker come dispositivi di questione autonomi.\nPossono essere tutti accoppiati individualmente.\nDovresti preferire usare i bridge.", "All": "Al", "All devices": "Tutti i dispositivi", + "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Tutte le informazioni di questo dispositivo o bridge verranno eliminate e sarà necessario riconnettersi nuovamente (tramite PIN o codice QR).", "All interfaces": "Tutte le interfacce", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Il Controller, tutti i dispositivi e i bridge verranno ripristinati alle impostazioni di fabbrica. \nIn questo modo vengono cancellati l'accoppiamento e i valori attuali per tutti i dispositivi, i bridge e anche i dispositivi accoppiati nel controller. Non puoi annullarlo.\nLa configurazione generale del controller e gli stati ioBroker assegnati ai bridge e ai dispositivi rimarranno invariati.", "Apply": "Fare domanda a", @@ -48,7 +49,6 @@ "Device is already commissioning. Show status information": "Il dispositivo è già in fase di messa in servizio. Mostra informazioni sullo stato", "Device is not commissioned. Show QR Code for commissioning": "Il dispositivo non è in funzione. Mostra il codice QR per la messa in funzione", "Device names": "Nomi dei dispositivi", - "Device or bridge will lost all commissioning information and you must reconnect (with PIN or QR code) again.": "Il dispositivo o il bridge perderanno tutte le informazioni di messa in servizio e sarà necessario riconnettersi nuovamente (con PIN o codice QR).", "Device type": "Tipo di dispositivo", "Device type \"%s\" is not supported yet": "Il tipo di dispositivo \"%s\" non è ancora supportato", "Devices": "Dispositivi", @@ -63,7 +63,7 @@ "Edit device": "Modifica dispositivo", "Enable": "Abilitare", "Enable device": "Abilita dispositivo", - "Enable enhanced debug logging for the Matter protocol": "Abilita la registrazione di debug avanzata per il protocollo Matter", + "Enable enhanced debug logging for the Matter protocol": "Abilita la registrazione di debug avanzata per il protocollo Matter (visibile solo con livello di registro \"debug\")", "Enable/disable bridge": "Abilita/disabilita il bridge", "Expand all": "Espandi tutto", "General": "Generale", @@ -99,6 +99,7 @@ "Provide your Thread or WiFi information or both!": "Fornisci le tue informazioni sulla discussione o sul WiFi o entrambi!", "QR Code": "Codice QR", "QR Code to connect": "Codice QR per connettersi", + "Re-Announce": "Re-announce", "Reconnect to backend": "Riconnettiti al backend", "Required": "Necessario", "Reset": "Ripristina", @@ -111,13 +112,17 @@ "Save": "Salva", "Select default bridge": "Seleziona il bridge predefinito", "Select/Unselect all devices in room": "Seleziona/Deseleziona tutti i dispositivi nella stanza", + "Show QR Code for commissioning": "Mostra il codice QR per la messa in servizio", + "Show additional information": "Mostra informazioni aggiuntive", + "Show error": "Mostra errore", "Show unsupported devices": "Mostra i dispositivi non supportati", "Status": "Stato", "Stop": "Fermare", "Successfully re-announced": "Riannunciato con successo!", - "Suppress question for 2 minutes": "Sopprimi la domanda per 2 minuti", + "Suppress question for 5 minutes": "Sopprimi la domanda per 5 minuti", "Sync credentials with %s": "Sincronizza le credenziali con %s", "This cannot be undone!": "Questa operazione non può essere annullata!", + "This device/bridge is linked to some ecosystem. If it is deleted here, you must manually remove it from your ecosystem!": "Questo dispositivo/bridge è collegato a un ecosistema. Se viene eliminato qui, devi rimuoverlo manualmente dal tuo ecosistema!", "Thread credentials": "Credenziali del thread", "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", @@ -132,6 +137,7 @@ "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "Hai bisogno dell'assistente ioBroker.pro o di un abbonamento remoto per avere più di 5 dispositivi in bridge", "You need to configure WLAN or Thread credentials above to activate BLE": "È necessario configurare le credenziali WLAN o Thread sopra per attivare BLE!", "blind": "Cieco", + "cancelButtonText": "Cancellare", "dimmer": "Dimmer", "door": "Porta", "fireAlarm": "Allarme antincendio", @@ -145,6 +151,7 @@ "media": "Media", "motion": "Movimento", "no IPv6": "nessun IPv6", + "okButtonText": "OK", "rgbSingle": "Luce RGB", "slider": "Dispositivo di scorrimento", "socket": "PRESA", @@ -163,4 +170,4 @@ "weatherForecast": "Previsioni del tempo", "window": "Finestra", "windowTilt": "Finestra inclinata" -} \ No newline at end of file +} diff --git a/src-admin/src/i18n/nl.json b/src-admin/src/i18n/nl.json index 6e363c41..b157d30a 100644 --- a/src-admin/src/i18n/nl.json +++ b/src-admin/src/i18n/nl.json @@ -13,6 +13,7 @@ "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "Naast bruggen kunt u ioBroker-statussen ook blootstellen als zelfstandige zakenapparaten.\nZe kunnen allemaal afzonderlijk worden gekoppeld.\nGebruik bij voorkeur bruggen.", "All": "Alles", "All devices": "Alle apparaten", + "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Alle gegevens van dit apparaat of deze brug worden verwijderd en u moet opnieuw verbinding maken (met pincode of QR-code).", "All interfaces": "Alle interfaces", "All state information of matter controller and devices will be deleted. You cannot undo it.": "De controller en alle apparaten en bruggen worden teruggezet naar de fabrieksinstellingen. \nHierdoor worden de koppelings- en huidige waarden voor alle apparaten, bruggen en ook gekoppelde apparaten in de controller verwijderd. Je kunt het niet ongedaan maken.\nDe algemene configuratie van de controller en de toegewezen ioBroker-statussen voor de bruggen en apparaten blijven ongewijzigd.", "Apply": "Toepassen", @@ -48,7 +49,6 @@ "Device is already commissioning. Show status information": "Apparaat is al in bedrijf. Statusinformatie weergeven", "Device is not commissioned. Show QR Code for commissioning": "Apparaat is niet in bedrijf gesteld. QR-code voor commissioninn weergeven", "Device names": "Apparaatnamen", - "Device or bridge will lost all commissioning information and you must reconnect (with PIN or QR code) again.": "Apparaat of bridge verliest alle inbedrijfstellingsinformatie en u moet opnieuw verbinding maken (met pincode of QR-code).", "Device type": "Soort apparaat", "Device type \"%s\" is not supported yet": "Apparaattype \"%s\" wordt nog niet ondersteund", "Devices": "Apparaten", @@ -63,7 +63,7 @@ "Edit device": "Apparaat bewerken", "Enable": "Inschakelen", "Enable device": "Schakel apparaat in", - "Enable enhanced debug logging for the Matter protocol": "Schakel verbeterde foutopsporingsregistratie in voor het Matter-protocol", + "Enable enhanced debug logging for the Matter protocol": "Verbeterde debug-logging inschakelen voor het Matter-protocol (alleen zichtbaar met logniveau 'debug')", "Enable/disable bridge": "Brug in-/uitschakelen", "Expand all": "Alles uitvouwen", "General": "Algemeen", @@ -99,6 +99,7 @@ "Provide your Thread or WiFi information or both!": "Geef uw Thread- of WiFi-informatie op, of beide!", "QR Code": "QR-code", "QR Code to connect": "QR-code om verbinding te maken", + "Re-Announce": "Re-announce", "Reconnect to backend": "Opnieuw verbinden met backend", "Required": "Vereist", "Reset": "Opnieuw instellen", @@ -111,13 +112,17 @@ "Save": "Redden", "Select default bridge": "Selecteer standaardbrug", "Select/Unselect all devices in room": "Selecteer/deselecteer alle apparaten in de kamer", + "Show QR Code for commissioning": "QR-code weergeven voor inbedrijfstelling", + "Show additional information": "Toon aanvullende informatie", + "Show error": "Fout weergeven", "Show unsupported devices": "Toon niet-ondersteunde apparaten", "Status": "Toestand", "Stop": "Stop", "Successfully re-announced": "Met succes opnieuw aangekondigd!", - "Suppress question for 2 minutes": "Onderdruk de vraag gedurende 2 minuten", + "Suppress question for 5 minutes": "Onderdruk de vraag gedurende 5 minuten", "Sync credentials with %s": "Synchroniseer inloggegevens met %s", "This cannot be undone!": "Dit kan niet ongedaan gemaakt worden!", + "This device/bridge is linked to some ecosystem. If it is deleted here, you must manually remove it from your ecosystem!": "Dit apparaat/deze brug is gekoppeld aan een ecosysteem. Als het hier wordt verwijderd, moet u het handmatig uit uw ecosysteem verwijderen!", "Thread credentials": "Thread-referenties", "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", @@ -132,6 +137,7 @@ "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "U hebt een ioBroker.pro-assistent of een extern abonnement nodig om meer dan 5 apparaten in bridge te hebben", "You need to configure WLAN or Thread credentials above to activate BLE": "U moet hierboven WLAN- of Thread-inloggegevens configureren om BLE te activeren!", "blind": "Blind", + "cancelButtonText": "Annuleren", "dimmer": "Dimmer", "door": "Deur", "fireAlarm": "Brandalarm", @@ -145,6 +151,7 @@ "media": "Media", "motion": "Beweging", "no IPv6": "geen IPv6", + "okButtonText": "OK", "rgbSingle": "RGB-licht", "slider": "Schuifregelaar", "socket": "Stopcontact", @@ -163,4 +170,4 @@ "weatherForecast": "Weervoorspelling", "window": "Raam", "windowTilt": "Gekanteld raam" -} \ No newline at end of file +} diff --git a/src-admin/src/i18n/pl.json b/src-admin/src/i18n/pl.json index ca889b97..aa9adc1a 100644 --- a/src-admin/src/i18n/pl.json +++ b/src-admin/src/i18n/pl.json @@ -13,6 +13,7 @@ "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "Oprócz mostów możesz także udostępniać stany ioBroker jako samodzielne urządzenia materii.\nWszystkie można łączyć indywidualnie.\nPowinieneś preferować korzystanie z mostów.", "All": "Wszystko", "All devices": "Wszystkie urządzenia", + "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Wszystkie informacje dotyczące tego urządzenia lub mostu zostaną usunięte i konieczne będzie ponowne nawiązanie połączenia (za pomocą kodu PIN lub QR).", "All interfaces": "Wszystkie interfejsy", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Kontroler oraz wszystkie urządzenia i mosty zostaną przywrócone do ustawień fabrycznych. \nSpowoduje to usunięcie parowania i bieżących wartości wszystkich urządzeń, mostów, a także sparowanych urządzeń w kontrolerze. Nie możesz tego cofnąć.\nOgólna konfiguracja kontrolera oraz przypisane stany ioBroker dla mostów i urządzeń pozostaną niezmienione.", "Apply": "Stosować", @@ -48,7 +49,6 @@ "Device is already commissioning. Show status information": "Urządzenie jest już uruchamiane. Pokaż informacje o stanie", "Device is not commissioned. Show QR Code for commissioning": "Urządzenie nie jest uruchomione. Pokaż kod QR dla commissioninn", "Device names": "Nazwy urządzeń", - "Device or bridge will lost all commissioning information and you must reconnect (with PIN or QR code) again.": "Urządzenie lub most utraci wszystkie informacje dotyczące uruchomienia i konieczne będzie ponowne nawiązanie połączenia (za pomocą kodu PIN lub QR).", "Device type": "Rodzaj urządzenia", "Device type \"%s\" is not supported yet": "Typ urządzenia „%s” nie jest jeszcze obsługiwany", "Devices": "Urządzenia", @@ -63,7 +63,7 @@ "Edit device": "Edytuj urządzenie", "Enable": "Włączać", "Enable device": "Włącz urządzenie", - "Enable enhanced debug logging for the Matter protocol": "Włącz ulepszone rejestrowanie debugowania dla protokołu Matter", + "Enable enhanced debug logging for the Matter protocol": "Włącz rozszerzone rejestrowanie debugowania dla protokołu Matter (widoczne tylko na poziomie rejestrowania „debugowanie”)", "Enable/disable bridge": "Włącz/wyłącz most", "Expand all": "Rozwiń wszystkie", "General": "Ogólny", @@ -99,6 +99,7 @@ "Provide your Thread or WiFi information or both!": "Podaj informacje o swoim wątku lub Wi-Fi lub jedno i drugie!", "QR Code": "Kod QR", "QR Code to connect": "Kod QR do połączenia", + "Re-Announce": "Re-announce", "Reconnect to backend": "Ponowne połączenie z zapleczem", "Required": "Wymagany", "Reset": "Resetowanie", @@ -111,13 +112,17 @@ "Save": "Ratować", "Select default bridge": "Wybierz domyślny most", "Select/Unselect all devices in room": "Zaznacz/odznacz wszystkie urządzenia w pokoju", + "Show QR Code for commissioning": "Pokaż kod QR do uruchomienia", + "Show additional information": "Pokaż dodatkowe informacje", + "Show error": "Pokaż błąd", "Show unsupported devices": "Pokaż nieobsługiwane urządzenia", "Status": "Status", "Stop": "Zatrzymywać się", "Successfully re-announced": "Pomyślnie ogłoszono ponownie!", - "Suppress question for 2 minutes": "Ukryj pytanie na 2 minuty", + "Suppress question for 5 minutes": "Ukryj pytanie na 5 minuty", "Sync credentials with %s": "Zsynchronizuj dane uwierzytelniające z %s", "This cannot be undone!": "Tego nie da się cofnąć!", + "This device/bridge is linked to some ecosystem. If it is deleted here, you must manually remove it from your ecosystem!": "To urządzenie/most jest połączone z jakimś ekosystemem. Jeśli zostanie tutaj usunięte, musisz ręcznie usunąć je ze swojego ekosystemu!", "Thread credentials": "Poświadczenia wątku", "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", @@ -132,6 +137,7 @@ "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "Aby mieć więcej niż 5 urządzeń w moście, potrzebujesz asystenta ioBroker.pro lub zdalnej subskrypcji", "You need to configure WLAN or Thread credentials above to activate BLE": "Aby aktywować BLE, musisz skonfigurować dane uwierzytelniające WLAN lub wątek powyżej!", "blind": "Ślepy", + "cancelButtonText": "Anulować", "dimmer": "Opornik", "door": "Drzwi", "fireAlarm": "Alarm przeciwpożarowy", @@ -145,6 +151,7 @@ "media": "Głoska bezdźwięczna", "motion": "Ruch", "no IPv6": "brak IPv6", + "okButtonText": "OK", "rgbSingle": "Światło RGB", "slider": "Suwak", "socket": "Gniazdo elektryczne", @@ -163,4 +170,4 @@ "weatherForecast": "Prognoza pogody", "window": "Okno", "windowTilt": "Uchylone okno" -} \ No newline at end of file +} diff --git a/src-admin/src/i18n/pt.json b/src-admin/src/i18n/pt.json index 403ea0b1..b5db90c6 100644 --- a/src-admin/src/i18n/pt.json +++ b/src-admin/src/i18n/pt.json @@ -13,6 +13,7 @@ "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "Além das pontes, você também pode expor os estados do ioBroker como dispositivos independentes.\nTodos eles podem ser emparelhados individualmente.\nVocê deve preferir usar pontes.", "All": "Tudo", "All devices": "Todos os dispositivos", + "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Todas as informações deste dispositivo ou ponte serão excluídas e você deverá se reconectar (com PIN ou código QR) novamente.", "All interfaces": "Todas as interfaces", "All state information of matter controller and devices will be deleted. You cannot undo it.": "O controlador e todos os dispositivos e pontes retornarão aos padrões de fábrica. \nIsso exclui os valores atuais e de emparelhamento de todos os dispositivos, pontes e também dos dispositivos emparelhados no controlador. Você não pode desfazer isso.\nA configuração geral do controlador e os estados atribuídos do ioBroker para as pontes e dispositivos permanecerão inalterados.", "Apply": "Aplicar", @@ -48,7 +49,6 @@ "Device is already commissioning. Show status information": "O dispositivo já está em comissionamento. Mostrar informações de status", "Device is not commissioned. Show QR Code for commissioning": "O dispositivo não está comissionado. Mostrar QR Code para comissioninn", "Device names": "Nomes de dispositivos", - "Device or bridge will lost all commissioning information and you must reconnect (with PIN or QR code) again.": "O dispositivo ou ponte perderá todas as informações de comissionamento e você deverá reconectar (com PIN ou código QR) novamente.", "Device type": "Tipo de dispositivo", "Device type \"%s\" is not supported yet": "O tipo de dispositivo \"%s\" ainda não é compatível", "Devices": "Dispositivos", @@ -63,7 +63,7 @@ "Edit device": "Editar dispositivo", "Enable": "Habilitar", "Enable device": "Ativar dispositivo", - "Enable enhanced debug logging for the Matter protocol": "Habilite o registro de depuração aprimorado para o protocolo Matter", + "Enable enhanced debug logging for the Matter protocol": "Habilitar registro de depuração aprimorado para o protocolo Matter (visível somente com o nível de registro \"debug\")", "Enable/disable bridge": "Habilitar/desabilitar ponte", "Expand all": "Expandir todos", "General": "Em geral", @@ -99,6 +99,7 @@ "Provide your Thread or WiFi information or both!": "Forneça suas informações de Thread ou WiFi ou ambos!", "QR Code": "Código QR", "QR Code to connect": "QR Code para conectar", + "Re-Announce": "Re-announce", "Reconnect to backend": "Reconectar ao backend", "Required": "Obrigatório", "Reset": "Reiniciar", @@ -111,13 +112,17 @@ "Save": "Salvar", "Select default bridge": "Selecione a ponte padrão", "Select/Unselect all devices in room": "Selecionar/desmarcar todos os dispositivos na sala", + "Show QR Code for commissioning": "Mostrar código QR para comissionamento", + "Show additional information": "Mostrar informações adicionais", + "Show error": "Mostrar erro", "Show unsupported devices": "Mostrar dispositivos não suportados", "Status": "Status", "Stop": "Parar", "Successfully re-announced": "Reanunciado com sucesso!", - "Suppress question for 2 minutes": "Suprimir pergunta por 2 minutos", + "Suppress question for 5 minutes": "Suprimir pergunta por 5 minutos", "Sync credentials with %s": "Sincronizar credenciais com %s", "This cannot be undone!": "Isto não pode ser desfeito!", + "This device/bridge is linked to some ecosystem. If it is deleted here, you must manually remove it from your ecosystem!": "Este dispositivo/ponte está vinculado a algum ecossistema. Se ele for excluído aqui, você deve removê-lo manualmente do seu ecossistema!", "Thread credentials": "Credenciais de thread", "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", @@ -132,6 +137,7 @@ "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "Você precisa do assistente ioBroker.pro ou assinatura remota para ter mais de 5 dispositivos em bridge", "You need to configure WLAN or Thread credentials above to activate BLE": "Você precisa configurar as credenciais WLAN ou Thread acima para ativar o BLE!", "blind": "Cego", + "cancelButtonText": "Cancelar", "dimmer": "Obscuro", "door": "Porta", "fireAlarm": "Alarme de incêndio", @@ -145,6 +151,7 @@ "media": "meios de comunicação", "motion": "Movimento", "no IPv6": "sem IPv6", + "okButtonText": "OK", "rgbSingle": "Luz RGB", "slider": "Controle deslizante", "socket": "Soquete", @@ -163,4 +170,4 @@ "weatherForecast": "Previsão do tempo", "window": "Janela", "windowTilt": "Janela inclinada" -} \ No newline at end of file +} diff --git a/src-admin/src/i18n/ru.json b/src-admin/src/i18n/ru.json index 7e0cda38..e31922de 100644 --- a/src-admin/src/i18n/ru.json +++ b/src-admin/src/i18n/ru.json @@ -13,6 +13,7 @@ "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "В дополнение к мостам вы также можете предоставлять состояния ioBroker как автономные материальные устройства.\nВсе они могут быть соединены индивидуально.\nВы должны предпочесть использовать мосты.", "All": "Все", "All devices": "Все устройства", + "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Вся информация об этом устройстве или мосте будет удалена, и вам придется заново подключиться (с помощью PIN-кода или QR-кода).", "All interfaces": "Все интерфейсы", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Для контроллера, всех устройств и мостов будут восстановлены заводские настройки по умолчанию. \nПри этом удаляются сопряженные и текущие значения для всех устройств, мостов, а также сопряженных устройств в контроллере. Вы не можете отменить это.\nОбщая конфигурация контроллера и назначенные состояния ioBroker для мостов и устройств останутся неизменными.", "Apply": "Применять", @@ -48,7 +49,6 @@ "Device is already commissioning. Show status information": "Устройство уже вводится в эксплуатацию. Показать информацию о статусе", "Device is not commissioned. Show QR Code for commissioning": "Устройство не введено в эксплуатацию. Показать QR-код для commissioninn", "Device names": "Имена устройств", - "Device or bridge will lost all commissioning information and you must reconnect (with PIN or QR code) again.": "Устройство или мост потеряют всю информацию о вводе в эксплуатацию, и вам придется повторно подключиться (с помощью PIN-кода или QR-кода).", "Device type": "Тип устройства", "Device type \"%s\" is not supported yet": "Тип устройства «%s» пока не поддерживается.", "Devices": "Устройства", @@ -63,7 +63,7 @@ "Edit device": "Изменить устройство", "Enable": "Давать возможность", "Enable device": "Включить устройство", - "Enable enhanced debug logging for the Matter protocol": "Включить расширенное ведение журнала отладки для протокола Matter.", + "Enable enhanced debug logging for the Matter protocol": "Включить расширенное ведение журнала отладки для протокола Matter (видно только с уровнем журнала «отладка»)", "Enable/disable bridge": "Включить/выключить мост", "Expand all": "Расширить все", "General": "Общий", @@ -99,6 +99,7 @@ "Provide your Thread or WiFi information or both!": "Предоставьте информацию о своей теме или Wi-Fi, или и то, и другое!", "QR Code": "QR-код", "QR Code to connect": "QR-код для подключения", + "Re-Announce": "Re-announce", "Reconnect to backend": "Повторное подключение к бэкэнду", "Required": "Необходимый", "Reset": "Перезагрузить", @@ -111,13 +112,17 @@ "Save": "Сохранять", "Select default bridge": "Выбрать мост по умолчанию", "Select/Unselect all devices in room": "Выбрать/отменить выбор всех устройств в комнате", + "Show QR Code for commissioning": "Показать QR-код для ввода в эксплуатацию", + "Show additional information": "Показать дополнительную информацию", + "Show error": "Показать ошибку", "Show unsupported devices": "Показать неподдерживаемые устройства", "Status": "Положение дел", "Stop": "Останавливаться", "Successfully re-announced": "Успешно повторно объявлено!", - "Suppress question for 2 minutes": "Подавить вопрос на 2 минуты", + "Suppress question for 5 minutes": "Не задавать вопрос 5 минут", "Sync credentials with %s": "Синхронизировать учетные данные с %s", "This cannot be undone!": "Это не может быть отменено!", + "This device/bridge is linked to some ecosystem. If it is deleted here, you must manually remove it from your ecosystem!": "Это устройство/мост привязано к какой-то экосистеме. Если оно удалено здесь, вам необходимо вручную удалить его из вашей экосистемы!", "Thread credentials": "Учетные данные потока", "Thread network name": "Имя сети Thread", "Thread operational dataset": "Thread operational dataset", @@ -132,6 +137,7 @@ "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "Вам нужен помощник ioBroker.pro или удаленная подписка, чтобы иметь более 5 устройств в мосту.", "You need to configure WLAN or Thread credentials above to activate BLE": "Вам необходимо настроить учетные данные WLAN или Thread, указанные выше, чтобы активировать BLE!", "blind": "Слепой", + "cancelButtonText": "Отмена", "dimmer": "Диммер", "door": "Дверь", "fireAlarm": "Пожарная тревога", @@ -145,6 +151,7 @@ "media": "СМИ", "motion": "Движение", "no IPv6": "нет IPv6", + "okButtonText": "Хорошо", "rgbSingle": "RGB-свет", "slider": "Слайдер", "socket": "Разъем", @@ -163,4 +170,4 @@ "weatherForecast": "Прогноз погоды", "window": "Окно", "windowTilt": "Наклонное окно" -} \ No newline at end of file +} diff --git a/src-admin/src/i18n/uk.json b/src-admin/src/i18n/uk.json index 2104851b..e0cc0603 100644 --- a/src-admin/src/i18n/uk.json +++ b/src-admin/src/i18n/uk.json @@ -13,6 +13,7 @@ "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "На додаток до мостів ви також можете виставляти стани ioBroker як самостійні матеріальні пристрої.\nЇх усіх можна поєднати окремо.\nКраще використовувати мости.", "All": "Усе", "All devices": "Всі пристрої", + "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Усю інформацію про цей пристрій або міст буде видалено, і вам доведеться знову підключитися (за допомогою PIN-коду або QR-коду).", "All interfaces": "Всі інтерфейси", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Контролер, усі пристрої та мости будуть відновлені до заводських налаштувань. \nЦе видаляє сполучення та поточні значення для всіх пристроїв, мостів, а також сполучених пристроїв у контролері. Ви не можете скасувати це.\nЗагальна конфігурація контролера та призначені стани ioBroker для мостів і пристроїв залишаться незмінними.", "Apply": "Застосувати", @@ -48,7 +49,6 @@ "Device is already commissioning. Show status information": "Пристрій вже введено в експлуатацію. Показати інформацію про стан", "Device is not commissioned. Show QR Code for commissioning": "Апарат не зданий в експлуатацію. Показати QR-код для комісії", "Device names": "Назви пристроїв", - "Device or bridge will lost all commissioning information and you must reconnect (with PIN or QR code) again.": "Пристрій або міст втратить всю інформацію про введення в експлуатацію, і ви повинні знову підключитися (за допомогою PIN-коду або QR-коду).", "Device type": "Тип пристрою", "Device type \"%s\" is not supported yet": "Тип пристрою \"%s\" ще не підтримується", "Devices": "Пристрої", @@ -63,7 +63,7 @@ "Edit device": "Редагувати пристрій", "Enable": "Увімкнути", "Enable device": "Увімкнути пристрій", - "Enable enhanced debug logging for the Matter protocol": "Увімкнути розширене журналювання налагодження для протоколу Matter", + "Enable enhanced debug logging for the Matter protocol": "Увімкнути розширене журналювання налагодження для протоколу Matter (видиме лише на рівні журналу \"налагодження\")", "Enable/disable bridge": "Увімкнути/вимкнути міст", "Expand all": "Розгорнути все", "General": "Загальний", @@ -99,6 +99,7 @@ "Provide your Thread or WiFi information or both!": "Надайте інформацію про свій ланцюжок або Wi-Fi або те й інше!", "QR Code": "QR-код", "QR Code to connect": "QR-код для підключення", + "Re-Announce": "Re-announce", "Reconnect to backend": "Повторно підключіться до сервера", "Required": "Обов'язковий", "Reset": "Скинути", @@ -111,13 +112,17 @@ "Save": "зберегти", "Select default bridge": "Виберіть міст за замовчуванням", "Select/Unselect all devices in room": "Виберіть/Скасуйте вибір усіх пристроїв у кімнаті", + "Show QR Code for commissioning": "Показати QR-код для введення в експлуатацію", + "Show additional information": "Показати додаткову інформацію", + "Show error": "Показати помилку", "Show unsupported devices": "Показати непідтримувані пристрої", "Status": "Статус", "Stop": "СТІЙ", "Successfully re-announced": "Успішно повторно анонсовано!", - "Suppress question for 2 minutes": "Приховати питання на 2 хвилини", + "Suppress question for 5 minutes": "Приховати питання на 5 хвилини", "Sync credentials with %s": "Синхронізувати облікові дані з %s", "This cannot be undone!": "Це не може бути скасоване!", + "This device/bridge is linked to some ecosystem. If it is deleted here, you must manually remove it from your ecosystem!": "Цей пристрій/міст пов’язаний з певною екосистемою. Якщо його буде видалено тут, ви повинні вручну видалити його зі своєї екосистеми!", "Thread credentials": "Облікові дані ланцюжка", "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", @@ -132,6 +137,7 @@ "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "Вам потрібен помічник ioBroker.pro або віддалена підписка, щоб мати більше 5 пристроїв у мосту", "You need to configure WLAN or Thread credentials above to activate BLE": "Щоб активувати BLE, вам потрібно налаштувати облікові дані WLAN або Thread вище!", "blind": "Сліпий", + "cancelButtonText": "Скасувати", "dimmer": "Диммер", "door": "двері", "fireAlarm": "Пожежна тривога", @@ -145,6 +151,7 @@ "media": "ЗМІ", "motion": "Рух", "no IPv6": "немає IPv6", + "okButtonText": "Добре", "rgbSingle": "Світло RGB", "slider": "повзунок", "socket": "Розетка", @@ -163,4 +170,4 @@ "weatherForecast": "Прогноз погоди", "window": "Вікно", "windowTilt": "Похиле вікно" -} \ No newline at end of file +} diff --git a/src-admin/src/i18n/zh-cn.json b/src-admin/src/i18n/zh-cn.json index 90a61bf8..e3bf6f0e 100644 --- a/src-admin/src/i18n/zh-cn.json +++ b/src-admin/src/i18n/zh-cn.json @@ -13,6 +13,7 @@ "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "除了桥接器之外,您还可以将 ioBroker 状态公开为独立的物质设备。\n它们都可以单独配对。\n您应该更喜欢使用桥接器。", "All": "全部", "All devices": "所有设备", + "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "此设备或网桥的所有信息将被删除,您必须重新连接(使用 PIN 或二维码)。", "All interfaces": "所有接口", "All state information of matter controller and devices will be deleted. You cannot undo it.": "控制器和所有设备和桥接器将恢复为出厂默认设置。\n这将删除控制器中所有设备、桥接器和配对设备的配对和当前值。您无法撤消此操作。\n控制器的一般配置以及桥接器和设备的指定 ioBroker 状态将保持不变。", "Apply": "申请", @@ -48,7 +49,6 @@ "Device is already commissioning. Show status information": "设备已经投入调试。显示状态信息", "Device is not commissioned. Show QR Code for commissioning": "设备未调试。显示 commissioninn 的二维码", "Device names": "设备名称", - "Device or bridge will lost all commissioning information and you must reconnect (with PIN or QR code) again.": "设备或网桥将丢失所有调试信息,您必须再次重新连接(使用 PIN 或 QR 码)。", "Device type": "设备类型", "Device type \"%s\" is not supported yet": "尚不支持设备类型“%s”", "Devices": "设备", @@ -63,7 +63,7 @@ "Edit device": "编辑设备", "Enable": "使能够", "Enable device": "启用设备", - "Enable enhanced debug logging for the Matter protocol": "为 Matter 协议启用增强调试日志记录", + "Enable enhanced debug logging for the Matter protocol": "为 Matter 协议启用增强调试日志记录(仅在“调试”日志级别下可见)", "Enable/disable bridge": "启用/禁用桥接", "Expand all": "展开全部", "General": "一般的", @@ -99,6 +99,7 @@ "Provide your Thread or WiFi information or both!": "提供您的 Thread 或 WiFi 信息或两者!", "QR Code": "二维码", "QR Code to connect": "二维码连接", + "Re-Announce": "Re-announce", "Reconnect to backend": "重新连接到后端", "Required": "必需的", "Reset": "重置", @@ -111,13 +112,17 @@ "Save": "节省", "Select default bridge": "选择默认桥", "Select/Unselect all devices in room": "选择/取消选择房间中的所有设备", + "Show QR Code for commissioning": "显示二维码进行调试", + "Show additional information": "显示更多信息", + "Show error": "显示错误", "Show unsupported devices": "显示不支持的设备", "Status": "地位", "Stop": "停止", "Successfully re-announced": "成功重播!", - "Suppress question for 2 minutes": "抑制提问 2 分钟", + "Suppress question for 5 minutes": "抑制提问 5 分钟", "Sync credentials with %s": "与 %s 同步凭据", "This cannot be undone!": "这不能被撤消!", + "This device/bridge is linked to some ecosystem. If it is deleted here, you must manually remove it from your ecosystem!": "此设备/桥接器已链接到某个生态系统。如果在此处删除,则必须手动将其从生态系统中移除!", "Thread credentials": "线程凭据", "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", @@ -132,6 +137,7 @@ "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "您需要 ioBroker.pro 助手或远程订阅才能在桥接中拥有超过 5 个设备", "You need to configure WLAN or Thread credentials above to activate BLE": "您需要配置上面的 WLAN 或 Thread 凭证来激活 BLE!", "blind": "瞎的", + "cancelButtonText": "取消", "dimmer": "调光器", "door": "门", "fireAlarm": "火警", @@ -145,6 +151,7 @@ "media": "媒体", "motion": "运动", "no IPv6": "没有 IPv6", + "okButtonText": "好的", "rgbSingle": "RGB灯", "slider": "滑块", "socket": "插座", @@ -163,4 +170,4 @@ "weatherForecast": "天气预报", "window": "窗户", "windowTilt": "倾斜窗户" -} \ No newline at end of file +} diff --git a/src-admin/src/types.d.ts b/src-admin/src/types.d.ts index f5067a69..d127f356 100644 --- a/src-admin/src/types.d.ts +++ b/src-admin/src/types.d.ts @@ -136,12 +136,14 @@ export enum NodeStates { export interface ConnectionInfo { vendorId: number; + vendorName: string; connected: boolean; label?: string; } export interface NodeStateResponse { status: NodeStates; + error?: boolean; qrPairingCode?: string; manualPairingCode?: string; connectionInfo?: ConnectionInfo[]; @@ -155,9 +157,18 @@ export interface GUIMessage { | 'updateStates' | 'discoveredDevice' | 'reconnect' + | 'progress' | 'updateController'; states?: { [uuid: string]: NodeStateResponse }; device?: CommissionableDevice; + + progress?: { + close?: boolean; + title?: string; + text?: string; + indeterminate?: boolean; + value?: number; + }; } export interface CommissioningInfo { diff --git a/src/lib/DeviceManagement.ts b/src/lib/DeviceManagement.ts index 9fcfc749..e7f0b04f 100644 --- a/src/lib/DeviceManagement.ts +++ b/src/lib/DeviceManagement.ts @@ -265,7 +265,14 @@ class MatterAdapterDeviceManagement extends DeviceManagement { } } - const progress = await context.openProgress(this.#adapter.t('Unpairing node...'), { label: '0%' }); + await this.#adapter.sendToGui({ + command: 'progress', + progress: { + title: this.#adapter.t('Unpairing node...'), + text: '0%', + value: 0, + }, + }); // Start an interval that normally covers 30s and with each update the number gets slower increased for the percentage let finished = false; @@ -275,13 +282,20 @@ class MatterAdapterDeviceManagement extends DeviceManagement { const updateProgress = async (): Promise => { iteration++; const progressValue = Math.min(99.9 * (1 - Math.exp(-iteration / (33 / 2))), 99.9); // Max 33 usually, scale factor 2 - await progress.update({ value: progressValue, label: `${progressValue.toFixed(0)}%` }); + await this.#adapter.sendToGui({ + command: 'progress', + progress: { + value: progressValue, + text: `${progressValue.toFixed(0)}%`, + }, + }); if (finished) { return; } timeout = setTimeout(updateProgress, 1000); }; timeout = setTimeout(updateProgress, 1000); + setTimeout(updateProgress, 1000); let errorHappened = false; try { @@ -296,7 +310,7 @@ class MatterAdapterDeviceManagement extends DeviceManagement { if (timeout) { clearTimeout(timeout); } - await progress.close(); + await this.#adapter.sendToGui({ command: 'progress' }); if (errorHappened) { await context.showMessage(this.#adapter.t('Error happened during unpairing. Please check the log.')); } @@ -370,7 +384,11 @@ class MatterAdapterDeviceManagement extends DeviceManagement { }; } - await context.showForm(schema, { title: this.#adapter.getText('Pair with Device'), buttons: ['cancel'] }); + await context.showForm(schema, { + title: this.#adapter.getText('Pair with Device'), + buttons: ['cancel'], + maxWidth: 'md', + }); } else { await context.showMessage(this.#adapter.t('No paring code received')); } @@ -429,7 +447,7 @@ class MatterAdapterDeviceManagement extends DeviceManagement { ): Promise<{ refresh: DeviceRefresh }> { const obj = await this.adapter.getObjectAsync(baseId); - //const node = nodeOrDevice instanceof GeneralMatterNode ? nodeOrDevice : undefined; + // const node = nodeOrDevice instanceof GeneralMatterNode ? nodeOrDevice : undefined; const device = nodeOrDevice instanceof GenericDeviceToIoBroker ? nodeOrDevice : undefined; const items: Record = { diff --git a/src/lib/i18n/de.json b/src/lib/i18n/de.json index 3ca8624a..24e72bdd 100644 --- a/src/lib/i18n/de.json +++ b/src/lib/i18n/de.json @@ -20,6 +20,7 @@ "No": "Nein", "No paring code received": "Kein Paring-Code erhalten", "Node": "Node", + "Pair with Device": "Mit Gerät koppeln", "Pairing Code": "Paarungscode", "Rename device": "Gerät umbenennen", "Rename node": "Knoten umbenennen", @@ -28,6 +29,7 @@ "The device should now identify itself for 30 seconds.": "Das Gerät sollte sich nun 30 Sekunden lang identifizieren.", "The node is currently not connected. When you unpair it now you need to factory reset the node to commission again. Are you sure?": "Der Knoten ist derzeit nicht verbunden. Wenn Sie das Pairing jetzt aufheben, müssen Sie den Knoten auf die Werkseinstellungen zurücksetzen, um ihn wieder in Betrieb zu nehmen. Sind Sie sicher?", "Unpair this node": "Diesen Knoten entkoppeln", + "Unpairing node...": "Knoten wird entkoppelt...", "Use the following pairing code to commission the device": "Verwenden Sie den folgenden Pairing-Code, um das Gerät in Betrieb zu nehmen", "Use the following pairing code to commission the device: %s": "Den folgenden Pairing-Code verwenden, um das Gerät in Betrieb zu nehmen: %s", "Yes": "Ja", diff --git a/src/lib/i18n/en.json b/src/lib/i18n/en.json index 6d34fae0..609ccf66 100644 --- a/src/lib/i18n/en.json +++ b/src/lib/i18n/en.json @@ -20,6 +20,7 @@ "No": "No", "No paring code received": "No paring code received", "Node": "Node", + "Pair with Device": "Pair with device", "Pairing Code": "Pairing Code", "Rename device": "Rename device", "Rename node": "Rename node", @@ -28,6 +29,7 @@ "The device should now identify itself for 30 seconds.": "The device should now identify itself for 30 seconds.", "The node is currently not connected. When you unpair it now you need to factory reset the node to commission again. Are you sure?": "The node is currently not connected. When you unpair it now you need to factory reset the node to commission again. Are you sure?", "Unpair this node": "Unpair this node", + "Unpairing node...": "Unpairing node...", "Use the following pairing code to commission the device": "Use the following pairing code to commission the device", "Use the following pairing code to commission the device: %s": "Use the following pairing code to commission the device: %s", "Yes": "Yes", diff --git a/src/lib/i18n/es.json b/src/lib/i18n/es.json index a3f7b3c5..064c9215 100644 --- a/src/lib/i18n/es.json +++ b/src/lib/i18n/es.json @@ -20,6 +20,7 @@ "No": "No", "No paring code received": "No se ha recibido el código de emparejamiento", "Node": "Nodo", + "Pair with Device": "Emparejar con el dispositivo", "Pairing Code": "Código de emparejamiento", "Rename device": "Cambiar nombre del dispositivo", "Rename node": "Renombrar nodo", @@ -28,6 +29,7 @@ "The device should now identify itself for 30 seconds.": "El dispositivo ahora debería identificarse durante 30 segundos.", "The node is currently not connected. When you unpair it now you need to factory reset the node to commission again. Are you sure?": "El nodo no está conectado actualmente. Cuando lo desemparejes ahora tendrás que restablecer de fábrica el nodo para volver a ponerlo en funcionamiento. ¿Está seguro?", "Unpair this node": "Desemparejar este nodo", + "Unpairing node...": "Desvinculando nodo...", "Use the following pairing code to commission the device": "Utilice el siguiente código de emparejamiento para poner en funcionamiento el dispositivo", "Use the following pairing code to commission the device: %s": "Utilice el siguiente código de emparejamiento para poner en marcha el dispositivo: %s", "Yes": "Sí", diff --git a/src/lib/i18n/fr.json b/src/lib/i18n/fr.json index 35f87e9f..f8447fc0 100644 --- a/src/lib/i18n/fr.json +++ b/src/lib/i18n/fr.json @@ -20,6 +20,7 @@ "No": "Non", "No paring code received": "Pas de code de parage reçu", "Node": "Nœud", + "Pair with Device": "Associer avec l'appareil", "Pairing Code": "Code d'appariement", "Rename device": "Renommer l'appareil", "Rename node": "Renommer un nœud", @@ -28,6 +29,7 @@ "The device should now identify itself for 30 seconds.": "L'appareil devrait maintenant s'identifier pendant 30 secondes.", "The node is currently not connected. When you unpair it now you need to factory reset the node to commission again. Are you sure?": "Le nœud n'est actuellement pas connecté. Lorsque vous le désassemblez, vous devez réinitialiser le nœud pour qu'il soit à nouveau opérationnel. Êtes-vous sûr ?", "Unpair this node": "Désappariement de ce nœud", + "Unpairing node...": "Nœud dissocié...", "Use the following pairing code to commission the device": "Utilisez le code d'appairage suivant pour mettre en service l'appareil", "Use the following pairing code to commission the device: %s": "Utilisez le code d'appairage suivant pour mettre l'appareil en service : %s", "Yes": "Oui", diff --git a/src/lib/i18n/it.json b/src/lib/i18n/it.json index acbe524b..6aee7cbe 100644 --- a/src/lib/i18n/it.json +++ b/src/lib/i18n/it.json @@ -20,6 +20,7 @@ "No": "No", "No paring code received": "Nessun codice di paring ricevuto", "Node": "Nodo", + "Pair with Device": "Associa al dispositivo", "Pairing Code": "Codice di associazione", "Rename device": "Rinominare il dispositivo", "Rename node": "Rinominare il nodo", @@ -28,6 +29,7 @@ "The device should now identify itself for 30 seconds.": "Ora il dispositivo dovrebbe identificarsi per 30 secondi.", "The node is currently not connected. When you unpair it now you need to factory reset the node to commission again. Are you sure?": "Il nodo non è attualmente collegato. Quando lo si disaccoppia, è necessario ripristinare le impostazioni di fabbrica del nodo per metterlo nuovamente in funzione. È sicuro?", "Unpair this node": "Disaccoppiamento di questo nodo", + "Unpairing node...": "Disaccoppiamento del nodo in corso...", "Use the following pairing code to commission the device": "Utilizzare il seguente codice di associazione per mettere in funzione il dispositivo", "Use the following pairing code to commission the device: %s": "Utilizzare il seguente codice di accoppiamento per mettere in funzione il dispositivo: %s", "Yes": "SÌ", diff --git a/src/lib/i18n/nl.json b/src/lib/i18n/nl.json index 23cbc8ee..183f3e99 100644 --- a/src/lib/i18n/nl.json +++ b/src/lib/i18n/nl.json @@ -20,6 +20,7 @@ "No": "Nee", "No paring code received": "Geen paringcode ontvangen", "Node": "Knooppunt", + "Pair with Device": "Koppelen met apparaat", "Pairing Code": "Koppelingscode", "Rename device": "Apparaat hernoemen", "Rename node": "Node hernoemen", @@ -28,6 +29,7 @@ "The device should now identify itself for 30 seconds.": "Het apparaat zou zichzelf nu 30 seconden lang moeten identificeren.", "The node is currently not connected. When you unpair it now you need to factory reset the node to commission again. Are you sure?": "De node is momenteel niet verbonden. Als je hem nu ontkoppelt, moet je de node een fabrieksreset geven om hem weer in gebruik te kunnen nemen. Weet je het zeker?", "Unpair this node": "Ontkoppel dit knooppunt", + "Unpairing node...": "Knooppunt ontkoppelen...", "Use the following pairing code to commission the device": "Gebruik de volgende koppelingscode om het apparaat in gebruik te nemen", "Use the following pairing code to commission the device: %s": "Gebruik de volgende koppelcode om het apparaat in gebruik te nemen: %s", "Yes": "Ja", diff --git a/src/lib/i18n/pl.json b/src/lib/i18n/pl.json index 3098da03..49bb6029 100644 --- a/src/lib/i18n/pl.json +++ b/src/lib/i18n/pl.json @@ -20,6 +20,7 @@ "No": "Nie", "No paring code received": "Nie otrzymano kodu parowania", "Node": "węzeł", + "Pair with Device": "Sparuj z urządzeniem", "Pairing Code": "Kod parowania", "Rename device": "Zmień nazwę urządzenia", "Rename node": "Zmiana nazwy węzła", @@ -28,6 +29,7 @@ "The device should now identify itself for 30 seconds.": "Urządzenie powinno teraz identyfikować się przez 30 sekund.", "The node is currently not connected. When you unpair it now you need to factory reset the node to commission again. Are you sure?": "Węzeł nie jest obecnie podłączony. Po rozparowaniu należy przywrócić ustawienia fabryczne, aby ponownie uruchomić węzeł. Czy na pewno?", "Unpair this node": "Rozparuj ten węzeł", + "Unpairing node...": "Rozparowywanie węzła...", "Use the following pairing code to commission the device": "Użyj poniższego kodu parowania, aby uruchomić urządzenie", "Use the following pairing code to commission the device: %s": "Użyj następującego kodu parowania, aby uruchomić urządzenie: %s", "Yes": "Tak", diff --git a/src/lib/i18n/pt.json b/src/lib/i18n/pt.json index 445045ef..121254ce 100644 --- a/src/lib/i18n/pt.json +++ b/src/lib/i18n/pt.json @@ -20,6 +20,7 @@ "No": "Não", "No paring code received": "Não foi recebido nenhum código de emparelhamento", "Node": "Nodo", + "Pair with Device": "Emparelhar com o dispositivo", "Pairing Code": "Código de pareamento", "Rename device": "Renomear dispositivo", "Rename node": "Mudar o nome do nó", @@ -28,6 +29,7 @@ "The device should now identify itself for 30 seconds.": "O dispositivo agora deve se identificar por 30 segundos.", "The node is currently not connected. When you unpair it now you need to factory reset the node to commission again. Are you sure?": "O nó não está atualmente ligado. Quando o desemparelhar, terá de repor as predefinições do nó para o colocar novamente em funcionamento. Tem a certeza?", "Unpair this node": "Desemparelhar este nó", + "Unpairing node...": "Desemparelhando nó...", "Use the following pairing code to commission the device": "Use o seguinte código de pareamento para comissionar o dispositivo", "Use the following pairing code to commission the device: %s": "Utilize o seguinte código de emparelhamento para ativar o dispositivo: %s", "Yes": "Sim", diff --git a/src/lib/i18n/ru.json b/src/lib/i18n/ru.json index c677758f..5383ca7e 100644 --- a/src/lib/i18n/ru.json +++ b/src/lib/i18n/ru.json @@ -20,6 +20,7 @@ "No": "Нет", "No paring code received": "Код разбора не получен", "Node": "Узел", + "Pair with Device": "Сопряжение с устройством", "Pairing Code": "Код сопряжения", "Rename device": "Переименовать устройство", "Rename node": "Переименовать узел", @@ -28,6 +29,7 @@ "The device should now identify itself for 30 seconds.": "Теперь устройство должно идентифицировать себя в течение 30 секунд.", "The node is currently not connected. When you unpair it now you need to factory reset the node to commission again. Are you sure?": "В настоящее время узел не подключен. При снятии сопряжения необходимо выполнить заводской сброс узла, чтобы он снова начал работать. Вы уверены?", "Unpair this node": "Отсоедините этот узел", + "Unpairing node...": "Отсоединение узла...", "Use the following pairing code to commission the device": "Используйте следующий код сопряжения для ввода устройства в эксплуатацию.", "Use the following pairing code to commission the device: %s": "Используйте следующий код сопряжения для ввода устройства в эксплуатацию: %s", "Yes": "Да", diff --git a/src/lib/i18n/uk.json b/src/lib/i18n/uk.json index 8e236a5a..9e35a1c8 100644 --- a/src/lib/i18n/uk.json +++ b/src/lib/i18n/uk.json @@ -20,6 +20,7 @@ "No": "Немає", "No paring code received": "Не отримано код парсингу", "Node": "вузол", + "Pair with Device": "Сполучення з пристроєм", "Pairing Code": "Код сполучення", "Rename device": "Перейменувати пристрій", "Rename node": "Перейменувати вузол", @@ -28,6 +29,7 @@ "The device should now identify itself for 30 seconds.": "Тепер пристрій має ідентифікувати себе протягом 30 секунд.", "The node is currently not connected. When you unpair it now you need to factory reset the node to commission again. Are you sure?": "Наразі вузол не підключено. Коли ви від'єднаєте його зараз, вам потрібно буде скинути до заводських налаштувань, щоб знову ввести вузол в експлуатацію. Ви впевнені?", "Unpair this node": "Від'єднайте цей вузол від пари", + "Unpairing node...": "Відключення вузла...", "Use the following pairing code to commission the device": "Використовуйте наведений нижче код сполучення, щоб ввести пристрій у дію", "Use the following pairing code to commission the device: %s": "Для введення пристрою в експлуатацію використовуйте такий код сполучення: %s", "Yes": "Так", diff --git a/src/lib/i18n/zh-cn.json b/src/lib/i18n/zh-cn.json index 96f30147..1be1463c 100644 --- a/src/lib/i18n/zh-cn.json +++ b/src/lib/i18n/zh-cn.json @@ -20,6 +20,7 @@ "No": "不", "No paring code received": "未收到配对码", "Node": "节点", + "Pair with Device": "与设备配对", "Pairing Code": "配对码", "Rename device": "重命名设备", "Rename node": "重命名节点", @@ -28,6 +29,7 @@ "The device should now identify itself for 30 seconds.": "该设备现在应该能够在 30 秒内识别自己。", "The node is currently not connected. When you unpair it now you need to factory reset the node to commission again. Are you sure?": "该节点当前未连接。现在取消配对时,您需要将节点恢复出厂设置才能再次投入使用。您确定吗?", "Unpair this node": "取消此节点的配对", + "Unpairing node...": "取消配对节点...", "Use the following pairing code to commission the device": "使用以下配对代码来调试设备", "Use the following pairing code to commission the device: %s": "使用以下配对代码来调试设备:%s", "Yes": "是的", diff --git a/src/main.ts b/src/main.ts index f21d3fbe..0e80c809 100644 --- a/src/main.ts +++ b/src/main.ts @@ -22,6 +22,7 @@ import type { PairedNodeConfig } from './matter/GeneralMatterNode'; import type { MessageResponse } from './matter/GeneralNode'; import { IoBrokerObjectStorage } from './matter/IoBrokerObjectStorage'; import { inspect } from 'util'; +import type { ConfigItemPanel, BackEndCommandJsonFormOptions } from '@iobroker/dm-utils'; const I18n = import('@iobroker/i18n'); const IOBROKER_USER_API = 'https://iobroker.pro:3001'; @@ -287,6 +288,81 @@ export class MatterAdapter extends utils.Adapter { this.sendTo(obj.from, obj.command, result, obj.callback); break; } + case 'extendedInfo': { + if (obj.callback) { + const message: { + uuid: string; + // Device or bridge is in error state + error?: boolean; + } = obj.message; + + if (message.error) { + // TODO: @Apollon77. Show error and instructions + + // Device is in error mode (We can read a backend info here!) + const schema: ConfigItemPanel = { + type: 'panel', + items: { + _uuid: { + type: 'staticText', + text: 'Device is in error state. Fix the error before enabling it again', + xs: 12, + }, + }, + }; + + const options: BackEndCommandJsonFormOptions = { + maxWidth: 'md', + data: {}, + title: 'Error information', + buttons: ['close'], + }; + + this.sendTo( + obj.from, + obj.command, + { + schema, + options, + }, + obj.callback, + ); + return; + } + + // TODO: @Apollon77. Show extended information + const schema: ConfigItemPanel = { + type: 'panel', + items: { + _uuid: { + type: 'text', + label: 'UUID', + readOnly: true, + default: message.uuid, + xs: 12, + }, + }, + }; + + const options: BackEndCommandJsonFormOptions = { + maxWidth: 'lg', + data: {}, + title: 'Extended information', + buttons: ['close'], + }; + + this.sendTo( + obj.from, + obj.command, + { + schema, + options, + }, + obj.callback, + ); + } + break; + } default: if (obj.callback) { this.sendTo(obj.from, obj.command, { error: `Unknown command "${obj.command}"` }, obj.callback); diff --git a/src/matter/BaseServerNode.ts b/src/matter/BaseServerNode.ts index ac52c7d2..22f9304b 100644 --- a/src/matter/BaseServerNode.ts +++ b/src/matter/BaseServerNode.ts @@ -11,12 +11,14 @@ export enum NodeStates { export interface ConnectionInfo { vendorId?: number; + vendorName?: string; connected: boolean; label?: string; } export interface NodeStateResponse { status: NodeStates; + error?: boolean; qrPairingCode?: string; manualPairingCode?: string; connectionInfo?: ConnectionInfo[]; @@ -59,6 +61,16 @@ export abstract class BaseServerNode implements GeneralNode { status: NodeStates.Creating, }; } + const { qrPairingCode, manualPairingCode } = this.serverNode.state.commissioning.pairingCodes; + + const result: NodeStateResponse = { + status: NodeStates.WaitingForCommissioning, + qrPairingCode: qrPairingCode, + manualPairingCode: manualPairingCode, + }; + + // TODO: @Apollon77. Set this flag to true if error flag should be shown + // result.error = true; // Device is not commissioned, so show QR code if (!this.serverNode.lifecycle.isCommissioned) { @@ -66,13 +78,8 @@ export abstract class BaseServerNode implements GeneralNode { this.commissioned = false; await this.adapter.setState(`${this.type}.${this.uuid}.commissioned`, this.commissioned, true); } - const { qrPairingCode, manualPairingCode } = this.serverNode.state.commissioning.pairingCodes; - return { - status: NodeStates.WaitingForCommissioning, - qrPairingCode: qrPairingCode, - manualPairingCode: manualPairingCode, - }; + return result; } if (this.commissioned !== true) { this.commissioned = true; @@ -82,28 +89,27 @@ export abstract class BaseServerNode implements GeneralNode { const activeSessions = Object.values(this.serverNode.state.sessions.sessions); const fabrics = Object.values(this.serverNode.state.commissioning.fabrics); - const connectionInfo: ConnectionInfo[] = fabrics.map(fabric => ({ + result.connectionInfo = fabrics.map(fabric => ({ vendorId: fabric?.rootVendorId, + vendorName: 'TODO', // TODO: Get vendor name connected: activeSessions .filter(session => session.fabric?.fabricId === fabric.fabricId) .some(({ numberOfActiveSubscriptions }) => !!numberOfActiveSubscriptions), label: fabric?.label, })); - if (connectionInfo.find(info => info.connected)) { + if (result.connectionInfo.find(info => info.connected)) { this.adapter.log.debug(`${this.type} ${this.uuid} is already commissioned and connected with controller`); - return { - status: NodeStates.ConnectedWithController, - connectionInfo, - }; + result.status = NodeStates.ConnectedWithController; + return result; } this.adapter.log.debug( `${this.type} ${this.uuid} is already commissioned. Waiting for controllers to connect ...`, ); - return { - status: NodeStates.Commissioned, - connectionInfo, - }; + + result.status = NodeStates.Commissioned; + + return result; } async updateUiState(): Promise {