From 6036467dc02f5c43378502cf17559fad0251f15c Mon Sep 17 00:00:00 2001 From: Donavan Becker Date: Sat, 6 Jul 2024 22:15:19 -0500 Subject: [PATCH] v2.1.3 (#833) ## [2.1.3](https://github.com/donavanbecker/homebridge-resideo/releases/tag/v2.1.3) (2024-07-06) ### What's Changes - Housekeeping and updated dependencies. **Full Changelog**: https://github.com/donavanbecker/homebridge-resideo/compare/v2.1.2..v2.1.3 --- CHANGELOG.md | 7 + package-lock.json | 708 +++++++++++++++------------ package.json | 28 +- src/devices/device.ts | 140 ++---- src/devices/leaksensors.ts | 14 +- src/devices/roomsensors.ts | 46 +- src/devices/roomsensorthermostats.ts | 114 +++-- src/devices/thermostats.ts | 20 +- src/platform.ts | 34 +- 9 files changed, 584 insertions(+), 527 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd1010af..bc846e9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. This project uses [Semantic Versioning](https://semver.org/) +## [2.1.3](https://github.com/donavanbecker/homebridge-resideo/releases/tag/v2.1.3) (2024-07-06) + +### What's Changes +- Housekeeping and updated dependencies. + +**Full Changelog**: https://github.com/donavanbecker/homebridge-resideo/compare/v2.1.2..v2.1.3 + ## [2.1.2](https://github.com/donavanbecker/homebridge-resideo/releases/tag/v2.1.2) (2024-05-30) ### What's Changes diff --git a/package-lock.json b/package-lock.json index af3f424a..3f415f03 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "homebridge-resideo", - "version": "2.1.2", + "version": "2.1.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "homebridge-resideo", - "version": "2.1.2", + "version": "2.1.3", "funding": [ { "type": "Paypal", @@ -22,26 +22,26 @@ "@homebridge/plugin-ui-utils": "^1.0.3", "axios": "1.7.2", "rxjs": "^7.8.1", - "undici": "^6.18.2" + "undici": "^6.19.2" }, "devDependencies": { - "@eslint/js": "^9.3.0", - "@stylistic/eslint-plugin": "^2.1.0", + "@eslint/js": "^9.6.0", + "@stylistic/eslint-plugin": "^2.3.0", "@types/eslint__js": "^8.42.3", - "@types/node": "^20.12.13", - "eslint": "^9.3.0", - "globals": "^15.3.0", - "homebridge": "^1.8.2", - "homebridge-config-ui-x": "4.56.2", - "nodemon": "^3.1.2", + "@types/node": "^20.14.10", + "eslint": "^9.6.0", + "globals": "^15.8.0", + "homebridge": "^1.8.3", + "homebridge-config-ui-x": "4.56.4", + "nodemon": "^3.1.4", "npm-check-updates": "^16.14.20", - "rimraf": "^5.0.7", + "rimraf": "^5.0.8", "ts-node": "^10.9.2", - "typescript": "^5.4.5", - "typescript-eslint": "^8.0.0-alpha.24" + "typescript": "^5.5.3", + "typescript-eslint": "^8.0.0-alpha.39" }, "engines": { - "homebridge": "^1.8.2", + "homebridge": "^1.8.3", "node": "^18 || ^20 || ^22" } }, @@ -99,15 +99,30 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.0.tgz", + "integrity": "sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", @@ -146,15 +161,25 @@ } }, "node_modules/@eslint/js": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.3.0.tgz", - "integrity": "sha512-niBqk8iwv96+yuTwjM6bWg8ovzAPF9qkICsGtcoa5/dmqcEMfdwNAX7+/OHcJHc7wj7XqPxH98oAHytFYlw6Sw==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.6.0.tgz", + "integrity": "sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==", "dev": true, "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@fastify/accept-negotiator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-1.1.0.tgz", @@ -166,9 +191,9 @@ } }, "node_modules/@fastify/ajv-compiler": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.5.0.tgz", - "integrity": "sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.6.0.tgz", + "integrity": "sha512-LwdXQJjmMD+GwLOkP7TVC68qa+pSSogeWWmznRJ/coyTcfe9qA05AHFSe1eZFwK6q+xVRpChnvFUkf1iYaSZsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -178,9 +203,9 @@ } }, "node_modules/@fastify/ajv-compiler/node_modules/ajv": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.14.0.tgz", - "integrity": "sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "dev": true, "license": "MIT", "dependencies": { @@ -436,21 +461,6 @@ "node": ">=0.3.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -465,13 +475,6 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/@humanwhocodes/retry": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", @@ -637,6 +640,13 @@ } } }, + "node_modules/@nestjs/common/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "license": "0BSD" + }, "node_modules/@nestjs/core": { "version": "10.3.7", "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.3.7.tgz", @@ -676,6 +686,13 @@ } } }, + "node_modules/@nestjs/core/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "license": "0BSD" + }, "node_modules/@nestjs/jwt": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-10.2.0.tgz", @@ -756,6 +773,13 @@ } } }, + "node_modules/@nestjs/platform-fastify/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "license": "0BSD" + }, "node_modules/@nestjs/platform-socket.io": { "version": "10.3.7", "resolved": "https://registry.npmjs.org/@nestjs/platform-socket.io/-/platform-socket.io-10.3.7.tgz", @@ -776,6 +800,13 @@ "rxjs": "^7.1.0" } }, + "node_modules/@nestjs/platform-socket.io/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "license": "0BSD" + }, "node_modules/@nestjs/swagger": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-7.3.1.tgz", @@ -834,6 +865,13 @@ } } }, + "node_modules/@nestjs/websockets/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "license": "0BSD" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1277,16 +1315,16 @@ "license": "MIT" }, "node_modules/@stylistic/eslint-plugin": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.1.0.tgz", - "integrity": "sha512-cBBowKP2u/+uE5CzgH5w8pE9VKqcM7BXdIDPIbGt2rmLJGnA6MJPr9vYGaqgMoJFs7R/FzsMQerMvvEP40g2uw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.3.0.tgz", + "integrity": "sha512-rtiz6u5gRyyEZp36FcF1/gHJbsbT3qAgXZ1qkad6Nr/xJ9wrSJkiSFFQhpYVTIZ7FJNRJurEcumZDCwN9dEI4g==", "dev": true, "license": "MIT", "dependencies": { - "@stylistic/eslint-plugin-js": "2.1.0", - "@stylistic/eslint-plugin-jsx": "2.1.0", - "@stylistic/eslint-plugin-plus": "2.1.0", - "@stylistic/eslint-plugin-ts": "2.1.0", + "@stylistic/eslint-plugin-js": "2.3.0", + "@stylistic/eslint-plugin-jsx": "2.3.0", + "@stylistic/eslint-plugin-plus": "2.3.0", + "@stylistic/eslint-plugin-ts": "2.3.0", "@types/eslint": "^8.56.10" }, "engines": { @@ -1297,9 +1335,9 @@ } }, "node_modules/@stylistic/eslint-plugin-js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.1.0.tgz", - "integrity": "sha512-gdXUjGNSsnY6nPyqxu6lmDTtVrwCOjun4x8PUn0x04d5ucLI74N3MT1Q0UhdcOR9No3bo5PGDyBgXK+KmD787A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.3.0.tgz", + "integrity": "sha512-lQwoiYb0Fs6Yc5QS3uT8+T9CPKK2Eoxc3H8EnYJgM26v/DgtW+1lvy2WNgyBflU+ThShZaHm3a6CdD9QeKx23w==", "dev": true, "license": "MIT", "dependencies": { @@ -1316,13 +1354,13 @@ } }, "node_modules/@stylistic/eslint-plugin-jsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-2.1.0.tgz", - "integrity": "sha512-mMD7S+IndZo2vxmwpHVTCwx2O1VdtE5tmpeNwgaEcXODzWV1WTWpnsc/PECQKIr/mkLPFWiSIqcuYNhQ/3l6AQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-2.3.0.tgz", + "integrity": "sha512-tsQ0IEKB195H6X9A4iUSgLLLKBc8gUBWkBIU8tp1/3g2l8stu+PtMQVV/VmK1+3bem5FJCyvfcZIQ/WF1fsizA==", "dev": true, "license": "MIT", "dependencies": { - "@stylistic/eslint-plugin-js": "^2.1.0", + "@stylistic/eslint-plugin-js": "^2.3.0", "@types/eslint": "^8.56.10", "estraverse": "^5.3.0", "picomatch": "^4.0.2" @@ -1335,28 +1373,28 @@ } }, "node_modules/@stylistic/eslint-plugin-plus": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-2.1.0.tgz", - "integrity": "sha512-S5QAlgYXESJaSBFhBSBLZy9o36gXrXQwWSt6QkO+F0SrT9vpV5JF/VKoh+ojO7tHzd8Ckmyouq02TT9Sv2B0zQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-2.3.0.tgz", + "integrity": "sha512-xboPWGUU5yaPlR+WR57GwXEuY4PSlPqA0C3IdNA/+1o2MuBi95XgDJcZiJ9N+aXsqBXAPIpFFb+WQ7QEHo4f7g==", "dev": true, "license": "MIT", "dependencies": { "@types/eslint": "^8.56.10", - "@typescript-eslint/utils": "^7.8.0" + "@typescript-eslint/utils": "^7.12.0" }, "peerDependencies": { "eslint": "*" } }, "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/scope-manager": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.11.0.tgz", - "integrity": "sha512-27tGdVEiutD4POirLZX4YzT180vevUURJl4wJGmm6TrQoiYwuxTIY98PBp6L2oN+JQxzE0URvYlzJaBHIekXAw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.15.0.tgz", + "integrity": "sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.11.0", - "@typescript-eslint/visitor-keys": "7.11.0" + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1367,9 +1405,9 @@ } }, "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.11.0.tgz", - "integrity": "sha512-MPEsDRZTyCiXkD4vd3zywDCifi7tatc4K37KqTprCvaXptP7Xlpdw0NR2hRJTetG5TxbWDB79Ys4kLmHliEo/w==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.15.0.tgz", + "integrity": "sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==", "dev": true, "license": "MIT", "engines": { @@ -1381,14 +1419,14 @@ } }, "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.11.0.tgz", - "integrity": "sha512-cxkhZ2C/iyi3/6U9EPc5y+a6csqHItndvN/CzbNXTNrsC3/ASoYQZEt9uMaEp+xFNjasqQyszp5TumAVKKvJeQ==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.15.0.tgz", + "integrity": "sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "7.11.0", - "@typescript-eslint/visitor-keys": "7.11.0", + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1410,16 +1448,16 @@ } }, "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/utils": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.11.0.tgz", - "integrity": "sha512-xlAWwPleNRHwF37AhrZurOxA1wyXowW4PqVXZVUNCLjB48CqdPJoJWkrpH2nij9Q3Lb7rtWindtoXwxjxlKKCA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.15.0.tgz", + "integrity": "sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.11.0", - "@typescript-eslint/types": "7.11.0", - "@typescript-eslint/typescript-estree": "7.11.0" + "@typescript-eslint/scope-manager": "7.15.0", + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/typescript-estree": "7.15.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1433,13 +1471,13 @@ } }, "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.11.0.tgz", - "integrity": "sha512-7syYk4MzjxTEk0g/w3iqtgxnFQspDJfn6QKD36xMuuhTzjcxY7F8EmBLnALjVyaOF1/bVocu3bS/2/F7rXrveQ==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.15.0.tgz", + "integrity": "sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.11.0", + "@typescript-eslint/types": "7.15.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -1474,9 +1512,9 @@ } }, "node_modules/@stylistic/eslint-plugin-plus/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "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": { @@ -1490,15 +1528,15 @@ } }, "node_modules/@stylistic/eslint-plugin-ts": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-2.1.0.tgz", - "integrity": "sha512-2ioFibufHYBALx2TBrU4KXovCkN8qCqcb9yIHc0fyOfTaO5jw4d56WW7YRcF3Zgde6qFyXwAN6z/+w4pnmos1g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-2.3.0.tgz", + "integrity": "sha512-wqOR38/uz/0XPnHX68ftp8sNMSAqnYGjovOTN7w00xnjS6Lxr3Sk7q6AaxWWqbMvOj7V2fQiMC5HWAbTruJsCg==", "dev": true, "license": "MIT", "dependencies": { - "@stylistic/eslint-plugin-js": "2.1.0", + "@stylistic/eslint-plugin-js": "2.3.0", "@types/eslint": "^8.56.10", - "@typescript-eslint/utils": "^7.8.0" + "@typescript-eslint/utils": "^7.12.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1508,14 +1546,14 @@ } }, "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/scope-manager": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.11.0.tgz", - "integrity": "sha512-27tGdVEiutD4POirLZX4YzT180vevUURJl4wJGmm6TrQoiYwuxTIY98PBp6L2oN+JQxzE0URvYlzJaBHIekXAw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.15.0.tgz", + "integrity": "sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.11.0", - "@typescript-eslint/visitor-keys": "7.11.0" + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1526,9 +1564,9 @@ } }, "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.11.0.tgz", - "integrity": "sha512-MPEsDRZTyCiXkD4vd3zywDCifi7tatc4K37KqTprCvaXptP7Xlpdw0NR2hRJTetG5TxbWDB79Ys4kLmHliEo/w==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.15.0.tgz", + "integrity": "sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==", "dev": true, "license": "MIT", "engines": { @@ -1540,14 +1578,14 @@ } }, "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.11.0.tgz", - "integrity": "sha512-cxkhZ2C/iyi3/6U9EPc5y+a6csqHItndvN/CzbNXTNrsC3/ASoYQZEt9uMaEp+xFNjasqQyszp5TumAVKKvJeQ==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.15.0.tgz", + "integrity": "sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "7.11.0", - "@typescript-eslint/visitor-keys": "7.11.0", + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1569,16 +1607,16 @@ } }, "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/utils": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.11.0.tgz", - "integrity": "sha512-xlAWwPleNRHwF37AhrZurOxA1wyXowW4PqVXZVUNCLjB48CqdPJoJWkrpH2nij9Q3Lb7rtWindtoXwxjxlKKCA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.15.0.tgz", + "integrity": "sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.11.0", - "@typescript-eslint/types": "7.11.0", - "@typescript-eslint/typescript-estree": "7.11.0" + "@typescript-eslint/scope-manager": "7.15.0", + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/typescript-estree": "7.15.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1592,13 +1630,13 @@ } }, "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.11.0.tgz", - "integrity": "sha512-7syYk4MzjxTEk0g/w3iqtgxnFQspDJfn6QKD36xMuuhTzjcxY7F8EmBLnALjVyaOF1/bVocu3bS/2/F7rXrveQ==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.15.0.tgz", + "integrity": "sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.11.0", + "@typescript-eslint/types": "7.15.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -1633,9 +1671,9 @@ } }, "node_modules/@stylistic/eslint-plugin-ts/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "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": { @@ -1734,9 +1772,9 @@ } }, "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "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": { @@ -1819,9 +1857,9 @@ } }, "node_modules/@types/node": { - "version": "20.12.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.13.tgz", - "integrity": "sha512-gBGeanV41c1L171rR7wjbMiEpEI/l5XFQdLLfhr/REwpgDy/4U8y89+i8kRiLzDyZdOkXh+cRaTetUnCYutoXA==", + "version": "20.14.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", + "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1836,24 +1874,24 @@ "license": "MIT" }, "node_modules/@types/validator": { - "version": "13.11.10", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.10.tgz", - "integrity": "sha512-e2PNXoXLr6Z+dbfx5zSh9TRlXJrELycxiaXznp4S5+D2M3b9bqJEitNHA5923jhnB2zzFiZHa2f0SI1HoIahpg==", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-nH45Lk7oPIJ1RVOF6JgFI6Dy0QpHEzq4QecZhvguxYPDwT8c93prCMqAtiIttm39voZ+DDR+qkNnMpJmMBRqag==", "dev": true, "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.0.0-alpha.24", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.0-alpha.24.tgz", - "integrity": "sha512-14rK2L+ayITgprWmtaoI7ImzAZtHpnzQ7ujKJDQP6FrLSpd2Xv9ndViiG1XvhXYnwH1ppHGRZDzOkOMmDgp3Mg==", + "version": "8.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.0-alpha.39.tgz", + "integrity": "sha512-ILv1vDA8M9ah1vzYpnOs4UOLRdB63Ki/rsxedVikjMLq68hFfpsDR25bdMZ4RyUkzLJwOhcg3Jujm/C1nupXKA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.0.0-alpha.24", - "@typescript-eslint/type-utils": "8.0.0-alpha.24", - "@typescript-eslint/utils": "8.0.0-alpha.24", - "@typescript-eslint/visitor-keys": "8.0.0-alpha.24", + "@typescript-eslint/scope-manager": "8.0.0-alpha.39", + "@typescript-eslint/type-utils": "8.0.0-alpha.39", + "@typescript-eslint/utils": "8.0.0-alpha.39", + "@typescript-eslint/visitor-keys": "8.0.0-alpha.39", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -1877,16 +1915,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.0.0-alpha.24", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.0.0-alpha.24.tgz", - "integrity": "sha512-Dpt40m3taG7Eidv6F1WLvMmt3mGDNib8l/rYiY+7CwjijgXYmwsX95W/P2+fW6LeBvB8ATIEcbSbdX7TUmcg5Q==", + "version": "8.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.0.0-alpha.39.tgz", + "integrity": "sha512-5k+pwV91plJojHgZkWlq4/TQdOrnEaeSvt48V0m8iEwdMJqX/63BXYxy8BUOSghWcjp05s73vy9HJjovAKmHkQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "8.0.0-alpha.24", - "@typescript-eslint/types": "8.0.0-alpha.24", - "@typescript-eslint/typescript-estree": "8.0.0-alpha.24", - "@typescript-eslint/visitor-keys": "8.0.0-alpha.24", + "@typescript-eslint/scope-manager": "8.0.0-alpha.39", + "@typescript-eslint/types": "8.0.0-alpha.39", + "@typescript-eslint/typescript-estree": "8.0.0-alpha.39", + "@typescript-eslint/visitor-keys": "8.0.0-alpha.39", "debug": "^4.3.4" }, "engines": { @@ -1906,14 +1944,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.0.0-alpha.24", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.0-alpha.24.tgz", - "integrity": "sha512-ATe1bLKAyJ3alyrAoC0Wel1mnBThFB0/OBoXHp9GKoiTHdqJAhs2cCgZOgQWyJmWLiLFQHLyJj3EIFpoaDOX+Q==", + "version": "8.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.0-alpha.39.tgz", + "integrity": "sha512-HCBlKQROY+JIgWolucdFMj1W3VUnnIQTdxAhxJTAj3ix2nASmvKIFgrdo5KQMrXxQj6tC4l3zva10L+s0dUIIw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.0.0-alpha.24", - "@typescript-eslint/visitor-keys": "8.0.0-alpha.24" + "@typescript-eslint/types": "8.0.0-alpha.39", + "@typescript-eslint/visitor-keys": "8.0.0-alpha.39" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1924,14 +1962,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.0.0-alpha.24", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.0-alpha.24.tgz", - "integrity": "sha512-jNh21K0/2aTekfPQAONImIEi0yTsLLH/dmOjuXLEX56QniTPoMKFrO9JYVUfjTRIlEHl8/F8VDv9yTINNcx/2w==", + "version": "8.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.0-alpha.39.tgz", + "integrity": "sha512-alO13fRU6yVeJbwl9ESI3AYhq5dQdz3Dpd0I5B4uezs2lvgYp44dZsj5hWyPz/kL7JFEsjbn+4b/CZA0OQJzjA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.0.0-alpha.24", - "@typescript-eslint/utils": "8.0.0-alpha.24", + "@typescript-eslint/typescript-estree": "8.0.0-alpha.39", + "@typescript-eslint/utils": "8.0.0-alpha.39", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -1949,9 +1987,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.0.0-alpha.24", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.0-alpha.24.tgz", - "integrity": "sha512-MwBAoDe8nf1KrquszS586fHp+b9LV4jd2zEzwB6FdfLmJavyHrJGVFmCVSoDNZ40MqCQklgY78px6TXnKulCfg==", + "version": "8.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.0-alpha.39.tgz", + "integrity": "sha512-yINN7j0/+S1VGSp0IgH52oQvUx49vkOug6xbrDA/9o+U55yCAQKSvYWvzYjNa+SZE3hXI0zwvYtMVsIAAMmKIQ==", "dev": true, "license": "MIT", "engines": { @@ -1963,14 +2001,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.0.0-alpha.24", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.0-alpha.24.tgz", - "integrity": "sha512-d/WTeR5eG9BboB9rPdcv7o8fZV4Jyy643Xxb9s0O9xX2X5oZrj5lqD7O/J+9aT9l/iE4U81sp1bceQKoUDJq0A==", + "version": "8.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.0-alpha.39.tgz", + "integrity": "sha512-S8gREuP8r8PCxGegeojeXntx0P50ul9YH7c7JYpbLIIsEPNr5f7UHlm+I1NUbL04CBin4kvZ60TG4eWr/KKN9A==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.0.0-alpha.24", - "@typescript-eslint/visitor-keys": "8.0.0-alpha.24", + "@typescript-eslint/types": "8.0.0-alpha.39", + "@typescript-eslint/visitor-keys": "8.0.0-alpha.39", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2002,9 +2040,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "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": { @@ -2018,16 +2056,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.0.0-alpha.24", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.0-alpha.24.tgz", - "integrity": "sha512-Ph3Mvh+KRlf8zPmhyFqSpDVCyfcCfNd7mLujLWzXo/TgJfXbdjjs7CLv8yc+tmB7zwgiv/XIeul1iyYUVKjMEw==", + "version": "8.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.0-alpha.39.tgz", + "integrity": "sha512-Nr2PrlfNhrNQTlFHlD7XJdTGw/Vt8qY44irk6bfjn9LxGdSG5e4c1R2UN6kvGMhhx20DBPbM7q3Z3r+huzmL1w==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.0.0-alpha.24", - "@typescript-eslint/types": "8.0.0-alpha.24", - "@typescript-eslint/typescript-estree": "8.0.0-alpha.24" + "@typescript-eslint/scope-manager": "8.0.0-alpha.39", + "@typescript-eslint/types": "8.0.0-alpha.39", + "@typescript-eslint/typescript-estree": "8.0.0-alpha.39" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2041,13 +2079,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.0.0-alpha.24", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.0-alpha.24.tgz", - "integrity": "sha512-9gu8YsifuPFXC1ZDPEXroGon1/IbSXD5bYFs6mmE8GwVo++Z1UTaO3tjTp+k/b85d8MBRkhetgBSFKKsIWetTw==", + "version": "8.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.0-alpha.39.tgz", + "integrity": "sha512-DVJ0UdhucZy+/1GlIy7FX2+CFhCeNAi4VwaEAe7u2UDenQr9/kGqvzx00UlpWibmEVDw4KsPOI7Aqa1+2Vqfmw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.0.0-alpha.24", + "@typescript-eslint/types": "8.0.0-alpha.39", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -2113,9 +2151,9 @@ } }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "license": "MIT", "bin": { @@ -2136,11 +2174,14 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", - "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", "dev": true, "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, "engines": { "node": ">=0.4.0" } @@ -2221,9 +2262,9 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.14.0.tgz", - "integrity": "sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "dev": true, "license": "MIT", "dependencies": { @@ -2383,9 +2424,9 @@ } }, "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", + "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==", "dev": true, "license": "MIT" }, @@ -2555,13 +2596,13 @@ "license": "MIT" }, "node_modules/bonjour-hap": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bonjour-hap/-/bonjour-hap-3.7.2.tgz", - "integrity": "sha512-BzOdOSIpXqjE1hejVNhj1T7E5YazPNG7cMOph5jQfzf1nF2yO18FSxuIg2zDMa4tFxhNC5d+U+0hT2bQkC5nTw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/bonjour-hap/-/bonjour-hap-3.8.0.tgz", + "integrity": "sha512-l/Ptvrt/pjN2pCgiVyyA0EkE0uVoXXYZ4DW4xhL4kDVBaw0w54/3Jhdhzn5EyT1Z8YhNXiNhSX0uW6xz2zSxqQ==", "dev": true, "license": "MIT", "dependencies": { - "array-flatten": "^2.1.2", + "array-flatten": "^3.0.0", "deep-equal": "^2.2.3", "multicast-dns": "^7.2.5", "multicast-dns-service-types": "^1.1.0" @@ -3065,9 +3106,9 @@ } }, "node_modules/commander": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.0.0.tgz", - "integrity": "sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, "license": "MIT", "engines": { @@ -3249,9 +3290,9 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "license": "MIT", "dependencies": { @@ -3605,9 +3646,9 @@ } }, "node_modules/engine.io": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", - "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", + "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", "dev": true, "license": "MIT", "dependencies": { @@ -3620,7 +3661,7 @@ "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", - "ws": "~8.11.0" + "ws": "~8.17.1" }, "engines": { "node": ">=10.2.0" @@ -3741,17 +3782,17 @@ } }, "node_modules/eslint": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.3.0.tgz", - "integrity": "sha512-5Iv4CsZW030lpUqHBapdPo3MJetAPtejVW8B84GIcIIv8+ohFaddXsrn1Gn8uD9ijDb+kcYKFUVmC8qG8B2ORQ==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.6.0.tgz", + "integrity": "sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", + "@eslint/config-array": "^0.17.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.3.0", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint/js": "9.6.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -3762,8 +3803,8 @@ "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.0.1", "eslint-visitor-keys": "^4.0.0", - "espree": "^10.0.1", - "esquery": "^1.4.2", + "espree": "^10.1.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", @@ -3789,7 +3830,7 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" } }, "node_modules/eslint-scope": { @@ -3823,13 +3864,13 @@ } }, "node_modules/espree": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.0.1.tgz", - "integrity": "sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.11.3", + "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.0.0" }, @@ -3998,9 +4039,9 @@ "license": "MIT" }, "node_modules/fast-json-stringify": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.16.0.tgz", - "integrity": "sha512-A4bg6E15QrkuVO3f0SwIASgzMzR6XC4qTyTqhf3hYXy0iazbAdZKwkE+ox4WgzKyzM6ygvbdq3r134UjOaaAnA==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.16.1.tgz", + "integrity": "sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==", "dev": true, "license": "MIT", "dependencies": { @@ -4014,9 +4055,9 @@ } }, "node_modules/fast-json-stringify/node_modules/ajv": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.14.0.tgz", - "integrity": "sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "dev": true, "license": "MIT", "dependencies": { @@ -4107,9 +4148,9 @@ } }, "node_modules/fast-uri": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.3.0.tgz", - "integrity": "sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.4.0.tgz", + "integrity": "sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==", "dev": true, "license": "MIT" }, @@ -4275,9 +4316,9 @@ } }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", "dev": true, "license": "ISC", "dependencies": { @@ -4586,9 +4627,9 @@ "license": "MIT" }, "node_modules/glob": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", - "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.3.tgz", + "integrity": "sha512-Q38SGlYRpVtDBPSWEylRyctn7uDeTp4NQERTLiCT1FqA9JXPYWqAVmQU6qh4r/zMM5ehxTcbaO8EjhWnvEhmyg==", "dev": true, "license": "ISC", "dependencies": { @@ -4596,13 +4637,14 @@ "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" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -4632,9 +4674,9 @@ } }, "node_modules/glob/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "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": { @@ -4674,9 +4716,9 @@ } }, "node_modules/globals": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.3.0.tgz", - "integrity": "sha512-cCdyVjIUVTtX8ZsPkq1oCsOsLmGIswqnjZYMJJTGaNApj1yHtLSymKhwH51ttirREn75z3p4k051clwg7rvNKA==", + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.8.0.tgz", + "integrity": "sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw==", "dev": true, "license": "MIT", "engines": { @@ -4761,19 +4803,19 @@ "license": "MIT" }, "node_modules/hap-nodejs": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/hap-nodejs/-/hap-nodejs-0.12.1.tgz", - "integrity": "sha512-iUUMaK6ucDKLMjT4m5Oz6CoLKkGg+omI6GR96weyL8fPGR1HYoCMtoJoUNW2NSIp4b2A6hx4zjNOEtLEaTA2MQ==", + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/hap-nodejs/-/hap-nodejs-0.12.2.tgz", + "integrity": "sha512-EAgcBOxxMaWKkRfuGc8FBVJO5/OCFM2jMt5+szkqazWLKANkRLrvf/GtQnPsl6GUuLiWYddLZ/zwasayU8ljQQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@homebridge/ciao": "^1.2.0", "@homebridge/dbus-native": "^0.6.0", "bonjour-hap": "^3.7.2", - "debug": "^4.3.4", + "debug": "^4.3.5", "fast-srp-hap": "^2.0.4", "futoin-hkdf": "^1.5.3", - "node-persist": "^0.0.11", + "node-persist": "^0.0.12", "source-map-support": "^0.5.21", "tslib": "^2.6.2", "tweetnacl": "^1.0.3" @@ -4914,16 +4956,16 @@ } }, "node_modules/homebridge": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/homebridge/-/homebridge-1.8.2.tgz", - "integrity": "sha512-K0P9/qk3RdAKGLhGrmtF4skUjcygNlnBu0S/ssKIdp4p0kMzW2wjw2Q+z7TCxgZVy84/kaR09UD1n6uJAunTOQ==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/homebridge/-/homebridge-1.8.3.tgz", + "integrity": "sha512-2s8BSV56xf+jGDguKqfpK0Kd14ciWBzX+YpN3iXW7BYF9IVzl4ai/XuoyeG0jMyWB+GN7KgifkAs0IYCAku/BA==", "dev": true, "license": "Apache-2.0", "dependencies": { "chalk": "4.1.2", - "commander": "12.0.0", + "commander": "12.1.0", "fs-extra": "11.2.0", - "hap-nodejs": "0.12.1", + "hap-nodejs": "0.12.2", "qrcode-terminal": "0.12.0", "semver": "7.6.2", "source-map-support": "0.5.21" @@ -4936,9 +4978,9 @@ } }, "node_modules/homebridge-config-ui-x": { - "version": "4.56.2", - "resolved": "https://registry.npmjs.org/homebridge-config-ui-x/-/homebridge-config-ui-x-4.56.2.tgz", - "integrity": "sha512-jsWr/EgxUkxznlQ1UxUjZWYc+xl99tWj6n5qqL7Xpe683qjYv5hA71Bj75v6ETwrz2sPttUb2sXMUIZDNvxtDA==", + "version": "4.56.4", + "resolved": "https://registry.npmjs.org/homebridge-config-ui-x/-/homebridge-config-ui-x-4.56.4.tgz", + "integrity": "sha512-zZQ505E8HtNRaC0IQAkbDIEKp21f3lZJP2f9ijD3zOZDHO9GS0Rp3U9iR5BRGY2Vt1JUZMdIHZmHcrVcxE3T9Q==", "dev": true, "funding": [ { @@ -5014,6 +5056,16 @@ "proxy-from-env": "^1.1.0" } }, + "node_modules/homebridge-config-ui-x/node_modules/commander": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.0.0.tgz", + "integrity": "sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/homebridge-config-ui-x/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -5209,9 +5261,9 @@ } }, "node_modules/ignore-walk/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "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": { @@ -5470,13 +5522,16 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5822,16 +5877,16 @@ } }, "node_modules/jackspeak": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.1.2.tgz", - "integrity": "sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.1.tgz", + "integrity": "sha512-U23pQPDnmYybVkYjObcuYMk43VRlMLLqLI+RdZy8s8WV8WsxO9SnqSroKaluuvcNOdCAlauKszDwd+umbot5Mg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=14" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -6058,9 +6113,9 @@ } }, "node_modules/libphonenumber-js": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.11.2.tgz", - "integrity": "sha512-V9mGLlaXN1WETzqQvSu6qf6XVAr3nFuJvWsHcuzCCCo6xUKawwSxOPTpan5CGOSKTn5w/bQuCZcLPJkyysgC3w==", + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.11.4.tgz", + "integrity": "sha512-F/R50HQuWWYcmU/esP5jrH5LiWYaN7DpN0a/99U8+mnGGtnx8kmRE+649dQh3v+CowXXZc8vpkf5AmYkO0AQ7Q==", "dev": true, "license": "MIT" }, @@ -6629,9 +6684,9 @@ "license": "MIT" }, "node_modules/nan": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", - "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", "dev": true, "license": "MIT" }, @@ -6660,9 +6715,9 @@ } }, "node_modules/node-abi": { - "version": "3.63.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.63.0.tgz", - "integrity": "sha512-vAszCsOUrUxjGAmdnM/pq7gUgie0IRteCQMX6d4A534fQCR93EJU5qgzBvU6EkFfK27s0T3HEV3BOyJIr7OMYw==", + "version": "3.65.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.65.0.tgz", + "integrity": "sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==", "dev": true, "license": "MIT", "dependencies": { @@ -6984,9 +7039,9 @@ } }, "node_modules/node-persist": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/node-persist/-/node-persist-0.0.11.tgz", - "integrity": "sha512-J3EPzQDgPxPBID7TqHSd5KkpTULFqJUvYDoISfOWg9EihpeVCH3b6YQeDeubzVuc4e6+aiVmkz2sdkWI4K+ghA==", + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/node-persist/-/node-persist-0.0.12.tgz", + "integrity": "sha512-Fbia3FYnURzaql53wLu0t19dmAwQg/tXT6O7YPmdwNwysNKEyFmgoT2BQlPD3XXQnYeiQVNvR5lfvufGwKuxhg==", "dev": true, "license": "MIT", "dependencies": { @@ -7010,9 +7065,9 @@ } }, "node_modules/nodemon": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.2.tgz", - "integrity": "sha512-/Ib/kloefDy+N0iRTxIUzyGcdW9lzlnca2Jsa5w73bs3npXjg+WInmiX6VY13mIb6SykkthYX/U5t0ukryGqBw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.4.tgz", + "integrity": "sha512-wjPBbFhtpJwmIeY2yP7QF+UKzPfltVGtfce1g/bB15/8vCGZj8uxD62b/b9M9/WVgme0NZudpownKN+c0plXlQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7238,9 +7293,9 @@ } }, "node_modules/npm-check-updates/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "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": { @@ -7430,11 +7485,14 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7659,6 +7717,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/pacote": { "version": "15.2.0", "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", @@ -7716,16 +7781,16 @@ } }, "node_modules/parse-github-url": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", - "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.3.tgz", + "integrity": "sha512-tfalY5/4SqGaV/GIGzWyHnFjlpTPTNpENR9Ea2lLldSJ8EWXMsvacWucqY3m3I4YPtas15IxTLQVQ5NSYXPrww==", "dev": true, "license": "MIT", "bin": { "parse-github-url": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, "node_modules/passport": { @@ -7815,13 +7880,13 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.1.tgz", + "integrity": "sha512-9/8QXrtbGeMB6LxwQd4x1tIMnsmUxMvIH/qWGsccz6bt9Uln3S+sgAaqfQNhbGA8ufzs2fHuP/yqapGgP9Hh2g==", "dev": true, "license": "ISC", "engines": { - "node": "14 || >=16.14" + "node": ">=18" } }, "node_modules/path-to-regexp": { @@ -8157,6 +8222,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/q/-/q-1.1.2.tgz", "integrity": "sha512-ROtylwux7Vkc4C07oKE/ReigUmb33kVoLtcR4SJ1QVqwaZkBEDL3vX4/kwFzIERQ5PfCl0XafbU8u2YUhyGgVA==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", "dev": true, "license": "MIT", "engines": { @@ -8503,16 +8569,16 @@ } }, "node_modules/rfdc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", - "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", "dev": true, "license": "MIT" }, "node_modules/rimraf": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz", - "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.8.tgz", + "integrity": "sha512-XSh0V2/yNhDEi8HwdIefD8MLgs4LQXPag/nEJWs3YUc3Upn+UHa1GyIkEg9xSSNt7HnkO5FjTvmcRzgf+8UZuw==", "dev": true, "license": "ISC", "dependencies": { @@ -8522,7 +8588,7 @@ "rimraf": "dist/esm/bin.mjs" }, "engines": { - "node": ">=14.18" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -8905,14 +8971,14 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz", - "integrity": "sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", "dev": true, "license": "MIT", "dependencies": { "debug": "~4.3.4", - "ws": "~8.11.0" + "ws": "~8.17.1" } }, "node_modules/socket.io-parser": { @@ -9601,9 +9667,9 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "license": "0BSD" }, "node_modules/tuf-js": { @@ -9678,9 +9744,9 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -9692,15 +9758,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.0.0-alpha.24", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.0.0-alpha.24.tgz", - "integrity": "sha512-YZD7Uz/8oze7Eal4REHRrltl7I7dg6A05sIVzZnkppRXvmUPTSBOPNwKoEkmAursQiVMasjAIYHR166t6IS/2w==", + "version": "8.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.0.0-alpha.39.tgz", + "integrity": "sha512-bsuR1BVJfHr7sBh7Cca962VPIcP+5UWaIa/+6PpnFZ+qtASjGTxKWIF5dG2o73BX9NsyqQfvRWujb3M9CIoRXA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.0.0-alpha.24", - "@typescript-eslint/parser": "8.0.0-alpha.24", - "@typescript-eslint/utils": "8.0.0-alpha.24" + "@typescript-eslint/eslint-plugin": "8.0.0-alpha.39", + "@typescript-eslint/parser": "8.0.0-alpha.39", + "@typescript-eslint/utils": "8.0.0-alpha.39" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9736,9 +9802,9 @@ "license": "MIT" }, "node_modules/undici": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.18.2.tgz", - "integrity": "sha512-o/MQLTwRm9IVhOqhZ0NQ9oXax1ygPjw6Vs+Vq/4QRjbOAC3B1GCHy7TYxxbExKlb7bzDRzt9vBWU6BDz0RFfYg==", + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.2.tgz", + "integrity": "sha512-JfjKqIauur3Q6biAtHJ564e3bWa8VvT+7cSiOJHFbX4Erv6CLGDpg8z+Fmg/1OI/47RA+GI2QZaF48SSaLvyBA==", "license": "MIT", "engines": { "node": ">=18.17" @@ -10276,9 +10342,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, "license": "MIT", "engines": { @@ -10286,7 +10352,7 @@ }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { diff --git a/package.json b/package.json index a2f506ca..ae1e60c0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "displayName": "Resideo", "name": "homebridge-resideo", - "version": "2.1.2", + "version": "2.1.3", "description": "The Resideo plugin allows you to access your Resideo device(s) from HomeKit.", "author": { "name": "donavanbecker", @@ -18,7 +18,7 @@ "url": "https://github.com/donavanbecker/homebridge-resideo/issues" }, "engines": { - "homebridge": "^1.8.2", + "homebridge": "^1.8.3", "node": "^18 || ^20 || ^22" }, "main": "dist/index.js", @@ -64,23 +64,23 @@ "dependencies": { "@homebridge/plugin-ui-utils": "^1.0.3", "rxjs": "^7.8.1", - "undici": "^6.18.2", + "undici": "^6.19.2", "axios": "1.7.2" }, "devDependencies": { - "@eslint/js": "^9.3.0", - "@stylistic/eslint-plugin": "^2.1.0", + "@eslint/js": "^9.6.0", + "@stylistic/eslint-plugin": "^2.3.0", "@types/eslint__js": "^8.42.3", - "@types/node": "^20.12.13", - "eslint": "^9.3.0", - "globals": "^15.3.0", - "homebridge": "^1.8.2", - "homebridge-config-ui-x": "4.56.2", - "nodemon": "^3.1.2", + "@types/node": "^20.14.10", + "eslint": "^9.6.0", + "globals": "^15.8.0", + "homebridge": "^1.8.3", + "homebridge-config-ui-x": "4.56.4", + "nodemon": "^3.1.4", "npm-check-updates": "^16.14.20", - "rimraf": "^5.0.7", + "rimraf": "^5.0.8", "ts-node": "^10.9.2", - "typescript": "^5.4.5", - "typescript-eslint": "^8.0.0-alpha.24" + "typescript": "^5.5.3", + "typescript-eslint": "^8.0.0-alpha.39" } } diff --git a/src/devices/device.ts b/src/devices/device.ts index e803b356..791f60c6 100644 --- a/src/devices/device.ts +++ b/src/devices/device.ts @@ -33,8 +33,8 @@ export abstract class deviceBase { this.hap = this.api.hap; - this.getDeviceLogSettings(device); - this.getDeviceRateSettings(device); + this.getDeviceLogSettings(accessory, device); + this.getDeviceRateSettings(accessory, device); this.getDeviceRetry(device); this.getDeviceConfigSettings(device); this.getDeviceContext(accessory, device, sensorAccessory); @@ -49,53 +49,26 @@ export abstract class deviceBase { .setCharacteristic(this.hap.Characteristic.SerialNumber, accessory.context.deviceID); } - async getDeviceLogSettings(device: resideoDevice & devicesConfig): Promise { - if (this.platform.debugMode) { - this.deviceLogging = this.accessory.context.logging = 'debugMode'; - this.debugWarnLog(`${this.device.deviceClass}: ${this.accessory.displayName} Using Debug Mode Logging: ${this.deviceLogging}`); - } else if (device.logging) { - this.deviceLogging = this.accessory.context.logging = device.logging; - this.debugWarnLog(`${this.device.deviceClass}: ${this.accessory.displayName} Using Device Config Logging: ${this.deviceLogging}`); - } else if (this.config.options?.logging) { - this.deviceLogging = this.accessory.context.logging = this.config.logging; - this.debugWarnLog(`${this.device.deviceClass}: ${this.accessory.displayName} Using Platform Config Logging: ${this.deviceLogging}`); - } else { - this.deviceLogging = this.accessory.context.logging = 'standard'; - this.debugWarnLog(`${this.device.deviceClass}: ${this.accessory.displayName} Logging Not Set, Using: ${this.deviceLogging}`); - } + async getDeviceLogSettings(accessory: PlatformAccessory, device: resideoDevice & devicesConfig): Promise { + this.deviceLogging = this.platform.debugMode ? 'debugMode' : device.logging ?? this.config.logging ?? 'standard'; + const logging = this.platform.debugMode ? 'Debug Mode' : device.logging ? 'Device Config' : this.config.logging ? 'Platform Config' : 'Default'; + accessory.context.deviceLogging = this.deviceLogging; + await this.debugLog(`Using ${logging} Logging: ${this.deviceLogging}`); } - async getDeviceRateSettings(device: resideoDevice & devicesConfig): Promise { + async getDeviceRateSettings(accessory: PlatformAccessory, device: resideoDevice & devicesConfig): Promise { // refreshRate - if (device.thermostat?.roomsensor?.refreshRate) { - this.deviceRefreshRate = device.thermostat.roomsensor.refreshRate; - this.debugLog(`${this.device.deviceClass}: ${this.accessory.displayName} Using Room Sensor Config Refresh Rate: ${this.deviceRefreshRate}`); - } else if (device.thermostat?.roompriority?.refreshRate) { - this.deviceRefreshRate = device.thermostat.roompriority.refreshRate; - this.debugLog(`${this.device.deviceClass}: ${this.accessory.displayName} Using Room Priority Config Refresh Rate: ${this.deviceRefreshRate}`); - } else if (device.refreshRate) { - this.deviceRefreshRate = this.accessory.context.deviceRefreshRate = device.refreshRate; - this.debugLog(`${this.device.deviceClass}: ${this.accessory.displayName} Using Device Config Refresh Rate: ${this.deviceRefreshRate}`); - } else { - this.deviceRefreshRate = this.config.options?.refreshRate ?? 120; - this.debugLog(`${this.device.deviceClass}: ${this.accessory.displayName} Using Platform Config Refresh Rate: ${this.deviceRefreshRate}`); - } - this.accessory.context.deviceRefreshRate = this.deviceRefreshRate; + this.deviceRefreshRate = device.thermostat?.roomsensor?.refreshRate ?? device.thermostat?.roompriority?.refreshRate ?? device.refreshRate + ?? this.config.options?.refreshRate ?? 120; + const refreshRate = device.thermostat?.roomsensor?.refreshRate ? 'Room Sensor Config' + : device.thermostat?.roompriority?.refreshRate ? 'Room Priority Config' : device.refreshRate ? 'Device Config' + : this.config.options?.refreshRate ? 'Platform Config' : 'Default'; + accessory.context.deviceRefreshRate = this.deviceRefreshRate; // pushRate - if (device.thermostat?.roomsensor?.pushRate) { - this.devicePushRate = device.thermostat.roomsensor.pushRate; - this.debugLog(`${this.device.deviceClass}: ${this.accessory.displayName} Using Room Sensor Config Push Rate: ${this.devicePushRate}`); - } else if (device.thermostat?.roompriority?.pushRate) { - this.devicePushRate = device.thermostat.roompriority.pushRate; - this.debugLog(`${this.device.deviceClass}: ${this.accessory.displayName} Using Room Priority Config Push Rate: ${this.devicePushRate}`); - } else if (device.pushRate) { - this.devicePushRate = device.pushRate; - this.debugLog(`${this.device.deviceClass}: ${this.accessory.displayName} Using Device Config Push Rate: ${this.devicePushRate}`); - } else { - this.devicePushRate = this.config.options?.pushRate ?? 0.1; - this.debugLog(`${this.device.deviceClass}: ${this.accessory.displayName} Using Platform Push Rate: ${this.devicePushRate}`); - } - this.accessory.context.devicePushRate = this.devicePushRate; + this.devicePushRate = device.pushRate ?? this.config.options?.pushRate ?? 0.1; + const pushRate = device.pushRate ? 'Device Config' : this.config.options?.pushRate ? 'Platform Config' : 'Default'; + await this.debugLog(`Using ${refreshRate} refreshRate: ${this.deviceRefreshRate}, ${pushRate} pushRate: ${this.devicePushRate}`); + accessory.context.devicePushRate = this.devicePushRate; } async getDeviceRetry(device: resideoDevice & devicesConfig): Promise { @@ -172,29 +145,8 @@ export abstract class deviceBase { } // Firmware Version - let deviceFirmwareVersion: string; - if (sensorAccessory?.accessoryAttribute.softwareRevision) { - deviceFirmwareVersion = sensorAccessory.accessoryAttribute.softwareRevision; - } else if (device.firmware) { - deviceFirmwareVersion = device.firmware; - this.debugSuccessLog(`${device.deviceType}: ${accessory.displayName} 1 FirmwareRevision: ${device.firmware}`); - } else if (device.firmwareVersion) { - deviceFirmwareVersion = device.firmwareVersion; - this.debugSuccessLog(`${device.deviceType}: ${accessory.displayName} 2 FirmwareRevision: ${device.firmwareVersion}`); - } else if (device.thermostatVersion) { - deviceFirmwareVersion = device.thermostatVersion; - this.debugSuccessLog(`${device.deviceType}: ${accessory.displayName} 3 FirmwareRevision: ${device.thermostatVersion}`); - } else if (accessory.context.deviceVersion) { - deviceFirmwareVersion = accessory.context.deviceVersion; - this.debugSuccessLog(`${device.deviceType}: ${accessory.displayName} 4 FirmwareRevision: ${accessory.context.deviceVersion}`); - } else { - deviceFirmwareVersion = this.platform.version ?? '0.0.0'; - if (this.platform.version) { - this.debugSuccessLog(`${device.deviceType}: ${accessory.displayName} 5 FirmwareRevision: ${this.platform.version}`); - } else { - this.debugSuccessLog(`${device.deviceType}: ${accessory.displayName} 6 FirmwareRevision: ${deviceFirmwareVersion}`); - } - } + const deviceFirmwareVersion = sensorAccessory?.accessoryAttribute.softwareRevision ?? device.firmware ?? device.firmwareVersion + ?? device.thermostatVersion ?? accessory.context.version ?? this.platform.version ?? '0.0.0'; const version = deviceFirmwareVersion.toString(); this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Firmware Version: ${version?.replace(/^V|-.*$/g, '')}`); let deviceVersion: string; @@ -290,65 +242,65 @@ export abstract class deviceBase { /** * Logging for Device */ - infoLog(...log: any[]): void { - if (this.enablingDeviceLogging()) { - this.log.info(String(...log)); + async infoLog(...log: any[]): Promise { + if (await this.enablingDeviceLogging()) { + this.log.info(`${this.device.deviceType}: ${this.accessory.displayName}`, String(...log)); } } - successLog(...log: any[]): void { - if (this.enablingDeviceLogging()) { - this.log.success(String(...log)); + async successLog(...log: any[]): Promise { + if (await this.enablingDeviceLogging()) { + this.log.success(`${this.device.deviceType}: ${this.accessory.displayName}`, String(...log)); } } - debugSuccessLog(...log: any[]): void { - if (this.enablingDeviceLogging()) { + async debugSuccessLog(...log: any[]): Promise { + if (await this.enablingDeviceLogging()) { if (this.deviceLogging?.includes('debug')) { - this.log.success('[DEBUG]', String(...log)); + this.log.success(`[DEBUG] ${this.device.deviceType}: ${this.accessory.displayName}`, String(...log)); } } } - warnLog(...log: any[]): void { - if (this.enablingDeviceLogging()) { - this.log.warn(String(...log)); + async warnLog(...log: any[]): Promise { + if (await this.enablingDeviceLogging()) { + this.log.warn(`${this.device.deviceType}: ${this.accessory.displayName}`, String(...log)); } } - debugWarnLog(...log: any[]): void { - if (this.enablingDeviceLogging()) { + async debugWarnLog(...log: any[]): Promise { + if (await this.enablingDeviceLogging()) { if (this.deviceLogging?.includes('debug')) { - this.log.warn('[DEBUG]', String(...log)); + this.log.warn(`[DEBUG] ${this.device.deviceType}: ${this.accessory.displayName}`, String(...log)); } } } - errorLog(...log: any[]): void { - if (this.enablingDeviceLogging()) { - this.log.error(String(...log)); + async errorLog(...log: any[]): Promise { + if (await this.enablingDeviceLogging()) { + this.log.error(`${this.device.deviceType}: ${this.accessory.displayName}`, String(...log)); } } - debugErrorLog(...log: any[]): void { - if (this.enablingDeviceLogging()) { + async debugErrorLog(...log: any[]): Promise { + if (await this.enablingDeviceLogging()) { if (this.deviceLogging?.includes('debug')) { - this.log.error('[DEBUG]', String(...log)); + this.log.error(`[DEBUG] ${this.device.deviceType}: ${this.accessory.displayName}`, String(...log)); } } } - debugLog(...log: any[]): void { - if (this.enablingDeviceLogging()) { + async debugLog(...log: any[]): Promise { + if (await this.enablingDeviceLogging()) { if (this.deviceLogging === 'debug') { - this.log.info('[DEBUG]', String(...log)); + this.log.info(`[DEBUG] ${this.device.deviceType}: ${this.accessory.displayName}`, String(...log)); } else { - this.log.debug(String(...log)); + this.log.debug(`${this.device.deviceType}: ${this.accessory.displayName}`, String(...log)); } } } - enablingDeviceLogging(): boolean { + async enablingDeviceLogging(): Promise { return this.deviceLogging.includes('debug') || this.deviceLogging === 'standard'; } } \ No newline at end of file diff --git a/src/devices/leaksensors.ts b/src/devices/leaksensors.ts index cbe9b5e4..33026464 100644 --- a/src/devices/leaksensors.ts +++ b/src/devices/leaksensors.ts @@ -84,14 +84,14 @@ export class LeakSensor extends deviceBase { // Initialize Leak Sensor Service if (device.leaksensor?.hide_leak) { if (this.LeakSensor) { - this.debugLog(`${device.deviceClass}: ${accessory.displayName} Removing Leak Sensor Service`); + this.debugLog(`${device.deviceClass} ${accessory.displayName} Removing Leak Sensor Service`); this.LeakSensor.Service = accessory.getService(this.hap.Service.LeakSensor) as Service; accessory.removeService(this.LeakSensor.Service); } else { this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Leak Sensor Service Not Found`); } } else { - this.debugLog(`${device.deviceClass}: ${accessory.displayName} Add Leak Sensor Service`); + this.debugLog(`${device.deviceClass} ${accessory.displayName} Add Leak Sensor Service`); accessory.context.LeakSensor = accessory.context.LeakSensor ?? {}; this.LeakSensor = { Name: accessory.context.LeakSensor.Name ?? `${accessory.displayName} Leak Sensor`, @@ -119,14 +119,14 @@ export class LeakSensor extends deviceBase { // Initialize Temperature Sensor Service if (device.leaksensor?.hide_temperature) { if (this.TemperatureSensor) { - this.debugLog(`${device.deviceClass}: ${accessory.displayName} Removing Temperature Sensor Service`); + this.debugLog(`${device.deviceClass} ${accessory.displayName} Removing Temperature Sensor Service`); this.TemperatureSensor.Service = accessory.getService(this.hap.Service.TemperatureSensor) as Service; accessory.removeService(this.TemperatureSensor.Service); } else { this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Temperature Sensor Service Not Found`); } } else { - this.debugLog(`${device.deviceClass}: ${accessory.displayName} Add Temperature Sensor Service`); + this.debugLog(`${device.deviceClass} ${accessory.displayName} Add Temperature Sensor Service`); accessory.context.TemperatureSensor = accessory.context.TemperatureSensor ?? {}; this.TemperatureSensor = { Name: accessory.context.TemperatureSensor.Name ?? `${accessory.displayName} Temperature Sensor`, @@ -153,14 +153,14 @@ export class LeakSensor extends deviceBase { // Initialize Humidity Sensor Service if (device.leaksensor?.hide_humidity) { if (this.HumiditySensor) { - this.debugLog(`${device.deviceClass}: ${accessory.displayName} Removing Humidity Sensor Service`); + this.debugLog(`${device.deviceClass} ${accessory.displayName} Removing Humidity Sensor Service`); this.HumiditySensor.Service = accessory.getService(this.hap.Service.HumiditySensor) as Service; accessory.removeService(this.HumiditySensor.Service); } else { this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Humidity Sensor Service Not Found`); } } else if (device.indoorHumidity) { - this.debugLog(`${device.deviceClass}: ${accessory.displayName} Add Humidity Sensor Service`); + this.debugLog(`${device.deviceClass} ${accessory.displayName} Add Humidity Sensor Service`); accessory.context.HumiditySensor = accessory.context.HumiditySensor ?? {}; this.HumiditySensor = { Name: accessory.context.HumiditySensor.Name ?? `${accessory.displayName} Humidity Sensor`, @@ -183,7 +183,7 @@ export class LeakSensor extends deviceBase { }); } else { - this.debugLog(`${device.deviceClass}: ${accessory.displayName} Humidity Sensor Service Not Added`); + this.debugLog(`${device.deviceClass} ${accessory.displayName} Humidity Sensor Service Not Added`); } // Intial Refresh diff --git a/src/devices/roomsensors.ts b/src/devices/roomsensors.ts index 6768a714..34115c06 100644 --- a/src/devices/roomsensors.ts +++ b/src/devices/roomsensors.ts @@ -93,14 +93,14 @@ export class RoomSensors extends deviceBase { // Initialize Occupancy Sensor Service if (device.thermostat?.roomsensor?.hide_occupancy) { if (this.OccupancySensor) { - this.debugLog(`${device.deviceClass}: ${accessory.displayName} Removing Occupancy Sensor Service`); + this.debugLog(`${sensorAccessory.accessoryAttribute.type} ${accessory.displayName} Removing Occupancy Sensor Service`); this.OccupancySensor.Service = accessory.getService(this.hap.Service.OccupancySensor) as Service; accessory.removeService(this.OccupancySensor.Service); } else { this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Occupancy Sensor Service Not Found`); } } else { - this.debugLog(`${device.deviceClass}: ${accessory.displayName} Add Occupancy Sensor Service`); + this.debugLog(`${sensorAccessory.accessoryAttribute.type} ${accessory.displayName} Add Occupancy Sensor Service`); accessory.context.OccupancySensor = accessory.context.OccupancySensor ?? {}; this.OccupancySensor = { Name: accessory.context.OccupancySensor.Name ?? `${accessory.displayName} Occupancy Sensor`, @@ -117,14 +117,14 @@ export class RoomSensors extends deviceBase { // Initialize Temperature Sensor Service if (device.thermostat?.roomsensor?.hide_temperature) { if (this.TemperatureSensor) { - this.debugLog(`${device.deviceClass}: ${accessory.displayName} Removing Temperature Sensor Service`); + this.debugLog(`${sensorAccessory.accessoryAttribute.type} ${accessory.displayName} Removing Temperature Sensor Service`); this.TemperatureSensor.Service = accessory.getService(this.hap.Service.TemperatureSensor) as Service; accessory.removeService(this.TemperatureSensor.Service); } else { this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Temperature Sensor Service Not Found`); } } else { - this.debugLog(`${device.deviceClass}: ${accessory.displayName} Add Temperature Sensor Service`); + this.debugLog(`${sensorAccessory.accessoryAttribute.type} ${accessory.displayName} Add Temperature Sensor Service`); accessory.context.TemperatureSensor = accessory.context.TemperatureSensor ?? {}; this.TemperatureSensor = { Name: accessory.context.TemperatureSensor.Name ?? `${accessory.displayName} Temperature Sensor`, @@ -150,14 +150,14 @@ export class RoomSensors extends deviceBase { // Initialize Humidity Sensor Service if (device.thermostat?.roomsensor?.hide_humidity) { if (this.HumiditySensor) { - this.debugLog(`${device.deviceClass}: ${accessory.displayName} Removing Humidity Sensor Service`); + this.debugLog(`${sensorAccessory.accessoryAttribute.type} ${accessory.displayName} Removing Humidity Sensor Service`); this.HumiditySensor.Service = accessory.getService(this.hap.Service.HumiditySensor) as Service; accessory.removeService(this.HumiditySensor.Service); } else { this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Humidity Sensor Service Not Found`); } } else { - this.debugLog(`${device.deviceClass}: ${accessory.displayName} Add Humidity Sensor Service`); + this.debugLog(`${sensorAccessory.accessoryAttribute.type} ${accessory.displayName} Add Humidity Sensor Service`); accessory.context.HumiditySensor = accessory.context.HumiditySensor ?? {}; this.HumiditySensor = { Name: accessory.context.HumiditySensor.Name ?? `${accessory.displayName} Humidity Sensor`, @@ -209,14 +209,16 @@ export class RoomSensors extends deviceBase { } else { this.Battery.StatusLowBattery = this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW; } - this.debugLog(`Room Sensor: ${this.accessory.displayName} StatusLowBattery: ${this.Battery.StatusLowBattery}`); + this.debugLog(`${sensorAccessory?.accessoryAttribute.type} ${this.accessory.displayName}` + + ` StatusLowBattery: ${this.Battery.StatusLowBattery}`); // Set Temperature Sensor State if (!device.thermostat?.roomsensor?.hide_temperature) { if (this.TemperatureSensor) { this.TemperatureSensor.CurrentTemperature = toCelsius(accessoryValue.indoorTemperature, this.hap.Characteristic.TemperatureDisplayUnits.CELSIUS); - this.debugLog(`Room Sensor: ${this.accessory.displayName} CurrentTemperature: ${this.TemperatureSensor.CurrentTemperature}°c`); + this.debugLog(`${sensorAccessory?.accessoryAttribute.type} ${this.accessory.displayName}` + + ` CurrentTemperature: ${this.TemperatureSensor.CurrentTemperature}°c`); } } @@ -228,7 +230,8 @@ export class RoomSensors extends deviceBase { } else { this.OccupancySensor.OccupancyDetected = 0; } - this.debugLog(`Room Sensor: ${this.accessory.displayName} OccupancyDetected: ${this.OccupancySensor.OccupancyDetected}`); + this.debugLog(`${sensorAccessory?.accessoryAttribute.type} ${this.accessory.displayName}` + + ` OccupancyDetected: ${this.OccupancySensor.OccupancyDetected}`); } } @@ -236,7 +239,8 @@ export class RoomSensors extends deviceBase { if (!device.thermostat?.roomsensor?.hide_humidity) { if (this.HumiditySensor) { this.HumiditySensor.CurrentRelativeHumidity = accessoryValue.indoorHumidity; - this.debugLog(`Room Sensor: ${this.accessory.displayName} CurrentRelativeHumidity: ${this.HumiditySensor.CurrentRelativeHumidity}%`); + this.debugLog(`${sensorAccessory?.accessoryAttribute.type} ${this.accessory.displayName}` + + ` CurrentRelativeHumidity: ${this.HumiditySensor.CurrentRelativeHumidity}%`); } } } @@ -271,38 +275,44 @@ export class RoomSensors extends deviceBase { */ async updateHomeKitCharacteristics(): Promise { if (this.Battery.StatusLowBattery === undefined) { - this.debugLog(`Room Sensor: ${this.accessory.displayName} StatusLowBattery: ${this.Battery.StatusLowBattery}`); + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.accessory.displayName}` + + ` StatusLowBattery: ${this.Battery.StatusLowBattery}`); } else { this.Battery.Service.updateCharacteristic(this.hap.Characteristic.StatusLowBattery, this.Battery.StatusLowBattery); - this.debugLog(`Room Sensor: ${this.accessory.displayName} updateCharacteristic StatusLowBattery: ${this.Battery.StatusLowBattery}`); + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.accessory.displayName} updateCharacteristic` + + ` StatusLowBattery: ${this.Battery.StatusLowBattery}`); } if (!this.device.thermostat?.roomsensor?.hide_temperature) { if (Number.isNaN(this.TemperatureSensor?.CurrentTemperature) === false) { if (this.TemperatureSensor?.CurrentTemperature === undefined) { - this.debugLog(`Room Sensor: ${this.accessory.displayName} CurrentTemperature: ${this.TemperatureSensor?.CurrentTemperature}`); + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.accessory.displayName}` + + ` CurrentTemperature: ${this.TemperatureSensor?.CurrentTemperature}`); } else { this.TemperatureSensor.Service.updateCharacteristic(this.hap.Characteristic.CurrentTemperature, this.TemperatureSensor.CurrentTemperature); - this.debugLog(`Room Sensor: ${this.accessory.displayName} updateCharacteristic` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.accessory.displayName} updateCharacteristic` + ` CurrentTemperature: ${this.TemperatureSensor.CurrentTemperature}`); } } } if (!this.device.thermostat?.roomsensor?.hide_occupancy) { if (this.OccupancySensor?.OccupancyDetected === undefined) { - this.debugLog(`Room Sensor: ${this.accessory.displayName} OccupancyDetected: ${this.OccupancySensor?.OccupancyDetected}`); + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.accessory.displayName}` + + ` OccupancyDetected: ${this.OccupancySensor?.OccupancyDetected}`); } else { this.OccupancySensor.Service.updateCharacteristic(this.hap.Characteristic.OccupancyDetected, this.OccupancySensor.OccupancyDetected); - this.debugLog(`Room Sensor: ${this.accessory.displayName} updateCharacteristic OccupancyDetected: ${this.OccupancySensor.OccupancyDetected}`); + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.accessory.displayName} updateCharacteristic` + + ` OccupancyDetected: ${this.OccupancySensor.OccupancyDetected}`); } } if (this.device.thermostat?.roomsensor?.hide_humidity) { if (this.HumiditySensor?.CurrentRelativeHumidity === undefined) { - this.debugLog(`Room Sensor: ${this.accessory.displayName} CurrentRelativeHumidity: ${this.HumiditySensor?.CurrentRelativeHumidity}`); + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.accessory.displayName}` + + ` CurrentRelativeHumidity: ${this.HumiditySensor?.CurrentRelativeHumidity}`); } else { this.HumiditySensor.Service?.updateCharacteristic(this.hap.Characteristic.CurrentRelativeHumidity, this.HumiditySensor.CurrentRelativeHumidity); - this.debugLog(`Room Sensor: ${this.accessory.displayName} updateCharacteristic` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.accessory.displayName} updateCharacteristic` + ` CurrentRelativeHumidity: ${this.HumiditySensor.CurrentRelativeHumidity}`); } } diff --git a/src/devices/roomsensorthermostats.ts b/src/devices/roomsensorthermostats.ts index 53279718..297b8f83 100644 --- a/src/devices/roomsensorthermostats.ts +++ b/src/devices/roomsensorthermostats.ts @@ -105,9 +105,11 @@ export class RoomSensorThermostat extends deviceBase { + ` maxHeatSetpoint: ${device.maxHeatSetpoint}, TemperatureDisplayUnits: ${this.Thermostat.TemperatureDisplayUnits}`); const minValue = toCelsius(device.minHeatSetpoint, Number(this.Thermostat.TemperatureDisplayUnits)); const maxValue = toCelsius(device.maxHeatSetpoint, Number(this.Thermostat.TemperatureDisplayUnits)); - this.debugLog(`Room Sensor ${this.device.deviceClass} ${accessory.displayName} minValue: ${minValue}, maxValue: ${maxValue}`); + this.debugLog(`${sensorAccessory.accessoryAttribute.type} ${this.device.deviceClass} ${accessory.displayName}` + + ` minValue: ${minValue}, maxValue: ${maxValue}`); if (device.changeableValues!.heatCoolMode === 'Heat') { - this.debugLog(`Room Sensor ${this.device.deviceClass} ${accessory.displayName} mode: ${device.changeableValues!.heatCoolMode}`); + this.debugLog(`${sensorAccessory.accessoryAttribute.type} ${this.device.deviceClass} ${accessory.displayName}` + + ` mode: ${device.changeableValues!.heatCoolMode}`); this.Thermostat.Service .getCharacteristic(this.hap.Characteristic.TargetTemperature) .setProps({ @@ -119,7 +121,8 @@ export class RoomSensorThermostat extends deviceBase { return this.Thermostat.TargetTemperature; }); } else { - this.debugLog(`Room Sensor ${this.device.deviceClass} ${accessory.displayName} mode: ${device.changeableValues!.heatCoolMode}`); + this.debugLog(`${sensorAccessory.accessoryAttribute.type} ${this.device.deviceClass} ${accessory.displayName}` + + ` mode: ${device.changeableValues!.heatCoolMode}`); this.Thermostat.Service .getCharacteristic(this.hap.Characteristic.TargetTemperature) .setProps({ @@ -339,12 +342,13 @@ export class RoomSensorThermostat extends deviceBase { this.Thermostat.CurrentTemperature = toCelsius(accessoryValue.indoorTemperature, Number(this.Thermostat.TemperatureDisplayUnits)); - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} CurrentTemperature: ${this.Thermostat.CurrentTemperature}`); + this.debugLog(`${sensorAccessory.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + + ` CurrentTemperature: ${this.Thermostat.CurrentTemperature}`); if (!device.thermostat?.hide_humidity && accessoryValue.indoorHumidity) { if (this.HumiditySensor) { this.HumiditySensor!.CurrentRelativeHumidity = accessoryValue.indoorHumidity; - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName}` + this.debugLog(`${sensorAccessory.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + ` CurrentRelativeHumidity: ${this.HumiditySensor.CurrentRelativeHumidity}`); } } @@ -377,7 +381,7 @@ export class RoomSensorThermostat extends deviceBase { default: this.Thermostat.CurrentHeatingCoolingState = this.hap.Characteristic.CurrentHeatingCoolingState.OFF; //0 } - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName}` + this.debugLog(`${sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + ` CurrentHeatingCoolingState: ${this.Thermostat.CurrentHeatingCoolingState}`); // Set the TargetTemperature value based on the current mode @@ -418,8 +422,9 @@ export class RoomSensorThermostat extends deviceBase { const action = 'refreshStatus'; await this.statusCode(statusCode, action); const deviceStatus: any = await body.json();*/ - this.debugLog(`Room Sensor ${device.deviceClass} ${this.accessory.displayName} (refreshStatus) device: ${JSON.stringify(device)}`); - this.debugLog(`Room Sensor ${device.deviceClass} ${this.accessory.displayName}` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${device.deviceClass} ${this.accessory.displayName} (refreshStatus)` + + ` device: ${JSON.stringify(device)}`); + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${device.deviceClass} ${this.accessory.displayName}` + ` Fetched update for: ${this.device.name} from Resideo API: ${JSON.stringify(this.device.changeableValues)}`); this.parseStatus(device); this.updateHomeKitCharacteristics(); @@ -453,20 +458,21 @@ export class RoomSensorThermostat extends deviceBase { const roomsensors = await this.platform.getCurrentSensorData(this.location, this.device, group); if (roomsensors.rooms) { const rooms = roomsensors.rooms; - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} roomsensors: ${JSON.stringify(roomsensors)}`); + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + + ` roomsensors: ${JSON.stringify(roomsensors)}`); for (const accessories of rooms) { if (accessories) { - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName}` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + ` accessories: ${JSON.stringify(accessories)}`); for (const sensorAccessory of accessories.accessories) { if (sensorAccessory.accessoryAttribute) { if (sensorAccessory.accessoryAttribute.type) { if (sensorAccessory.accessoryAttribute.type.startsWith('IndoorAirSensor')) { this.parseStatus(this.device, sensorAccessory); - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName}` + this.debugLog(`${sensorAccessory.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + ` accessoryAttribute: ${JSON.stringify(this.sensorAccessory?.accessoryAttribute)}`); - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} Name: ` - + `${this.sensorAccessory?.accessoryAttribute.name},` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass}` + + ` ${this.accessory.displayName} Name: ${this.sensorAccessory?.accessoryAttribute.name},` + ` Software Version: ${this.sensorAccessory?.accessoryAttribute.softwareRevision}`); } } @@ -519,7 +525,7 @@ export class RoomSensorThermostat extends deviceBase { const action = 'refreshRoomPriority'; await this.statusCode(statusCode, action); const roomPriorityStatus: any = await body.json();*/ - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} (refreshRoomPriority)` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName} (refreshRoomPriority)` + ` roomPriorityStatus: ${JSON.stringify(roomPriorityStatus)}`); } this.parseStatus(this.device, this.sensorAccessory); @@ -530,7 +536,7 @@ export class RoomSensorThermostat extends deviceBase { * Pushes the requested changes for Room Priority to the Resideo API */ async pushRoomChanges(): Promise { - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} Room Priority, + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName} Room Priority, Current Room: ${JSON.stringify(this.roomPriorityStatus.currentPriority.selectedRooms)}, Changing Room: [${this.sensorAccessory?.accessoryId}]`); if (`[${this.sensorAccessory?.accessoryId}]` !== `[${this.roomPriorityStatus.currentPriority.selectedRooms}]`) { const payload = { @@ -551,13 +557,16 @@ export class RoomSensorThermostat extends deviceBase { */ if (this.device.thermostat?.roompriority?.deviceType === 'Thermostat') { if (this.device.thermostat?.roompriority.priorityType === 'FollowMe') { - this.successLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} sent request to Resideo API, Priority Type:` + this.successLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass}` + + ` ${this.accessory.displayName} sent request to Resideo API, Priority Type:` + ` ${this.device.thermostat?.roompriority.priorityType} Built-in Occupancy Sensor(s) Will be used to set Priority Automatically.`); } else if (this.device.thermostat?.roompriority.priorityType === 'WholeHouse') { - this.successLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} sent request to Resideo API,` + this.successLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass}` + + ` ${this.accessory.displayName} sent request to Resideo API,` + ` Priority Type: ${this.device.thermostat?.roompriority.priorityType}`); } else if (this.device.thermostat?.roompriority.priorityType === 'PickARoom') { - this.successLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} sent request to Resideo API, Room Priority: ` + this.successLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass}` + + ` ${this.accessory.displayName} sent request to Resideo API, Room Priority: ` + `${this.sensorAccessory?.accessoryAttribute.name}, Priority Type: ${this.device.thermostat?.roompriority.priorityType}`); } @@ -582,7 +591,8 @@ export class RoomSensorThermostat extends deviceBase { const action = 'pushRoomChanges'; await this.statusCode(statusCode, action); this.debugLog(`(pushRoomChanges) body: ${JSON.stringify(body)}`);*/ - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} pushRoomChanges: ${JSON.stringify(payload)}`); + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + + ` pushRoomChanges: ${JSON.stringify(payload)}`); } // Refresh the status from the API await this.refreshSensorStatus(); @@ -605,7 +615,8 @@ export class RoomSensorThermostat extends deviceBase { case this.hap.Characteristic.TargetHeatingCoolingState.HEAT: payload.heatSetpoint = toFahrenheit(Number(this.Thermostat.TargetTemperature), Number(this.Thermostat.TemperatureDisplayUnits)); payload.coolSetpoint = toFahrenheit(Number(this.Thermostat.CoolingThresholdTemperature), Number(this.Thermostat.TemperatureDisplayUnits)); - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} TargetHeatingCoolingState (HEAT): ` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass}` + + ` ${this.accessory.displayName} TargetHeatingCoolingState (HEAT): ` + `${this.Thermostat.TargetHeatingCoolingState}, TargetTemperature: ${toFahrenheit(Number(this.Thermostat.TargetTemperature), Number(this.Thermostat.TemperatureDisplayUnits))} heatSetpoint, CoolingThresholdTemperature: ` + `${toFahrenheit(Number(this.Thermostat.CoolingThresholdTemperature), Number(this.Thermostat.TemperatureDisplayUnits))} coolSetpoint`); @@ -613,7 +624,8 @@ export class RoomSensorThermostat extends deviceBase { case this.hap.Characteristic.TargetHeatingCoolingState.COOL: payload.coolSetpoint = toFahrenheit(Number(this.Thermostat.TargetTemperature), Number(this.Thermostat.TemperatureDisplayUnits)); payload.heatSetpoint = toFahrenheit(Number(this.Thermostat.HeatingThresholdTemperature), Number(this.Thermostat.TemperatureDisplayUnits)); - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} TargetHeatingCoolingState (COOL): ` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass}` + + ` ${this.accessory.displayName} TargetHeatingCoolingState (COOL): ` + `${this.Thermostat.TargetHeatingCoolingState}, TargetTemperature: ${toFahrenheit(Number(this.Thermostat.TargetTemperature), Number(this.Thermostat.TemperatureDisplayUnits))} coolSetpoint, CoolingThresholdTemperature: ` + `${toFahrenheit(Number(this.Thermostat.HeatingThresholdTemperature), Number(this.Thermostat.TemperatureDisplayUnits))} heatSetpoint`); @@ -621,7 +633,8 @@ export class RoomSensorThermostat extends deviceBase { case this.hap.Characteristic.TargetHeatingCoolingState.AUTO: payload.coolSetpoint = toFahrenheit(Number(this.Thermostat.CoolingThresholdTemperature), Number(this.Thermostat.TemperatureDisplayUnits)); payload.heatSetpoint = toFahrenheit(Number(this.Thermostat.HeatingThresholdTemperature), Number(this.Thermostat.TemperatureDisplayUnits)); - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} TargetHeatingCoolingState (AUTO): ` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass}` + + ` ${this.accessory.displayName} TargetHeatingCoolingState (AUTO): ` + `${this.Thermostat.TargetHeatingCoolingState}, CoolingThresholdTemperature: ` + `${toFahrenheit(Number(this.Thermostat.CoolingThresholdTemperature), Number(this.Thermostat.TemperatureDisplayUnits))} coolSetpoint,` + ` HeatingThresholdTemperature: ${toFahrenheit(Number(this.Thermostat.HeatingThresholdTemperature), @@ -630,13 +643,14 @@ export class RoomSensorThermostat extends deviceBase { default: payload.coolSetpoint = toFahrenheit(Number(this.Thermostat.CoolingThresholdTemperature), Number(this.Thermostat.TemperatureDisplayUnits)); payload.heatSetpoint = toFahrenheit(Number(this.Thermostat.HeatingThresholdTemperature), Number(this.Thermostat.TemperatureDisplayUnits)); - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} TargetHeatingCoolingState (OFF): ` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass}` + + ` ${this.accessory.displayName} TargetHeatingCoolingState (OFF): ` + `${this.Thermostat.TargetHeatingCoolingState}, CoolingThresholdTemperature: ` + `${toFahrenheit(Number(this.Thermostat.CoolingThresholdTemperature), Number(this.Thermostat.TemperatureDisplayUnits))} coolSetpoint,` + ` HeatingThresholdTemperature: ${toFahrenheit(Number(this.Thermostat.HeatingThresholdTemperature), Number(this.Thermostat.TemperatureDisplayUnits))} heatSetpoint`); } - this.successLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName}` + this.successLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + ` set request (${JSON.stringify(payload)}) to Resideo API.`); // Make the API request @@ -659,7 +673,8 @@ export class RoomSensorThermostat extends deviceBase { }); const action = 'pushChanges'; await this.statusCode(statusCode, action);*/ - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} pushChanges: ${JSON.stringify(payload)}`); + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + + ` pushChanges: ${JSON.stringify(payload)}`); } catch (e: any) { const action = 'pushChanges'; if (this.device.retry) { @@ -704,65 +719,67 @@ export class RoomSensorThermostat extends deviceBase { */ async updateHomeKitCharacteristics(): Promise { if (this.Thermostat.TemperatureDisplayUnits === undefined) { - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName}` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + ` TemperatureDisplayUnits: ${this.Thermostat.TemperatureDisplayUnits}`); } else { this.Thermostat.Service.updateCharacteristic(this.hap.Characteristic.TemperatureDisplayUnits, this.Thermostat.TemperatureDisplayUnits); - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} updateCharacteristic` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName} updateCharacteristic` + ` TemperatureDisplayUnits: ${this.Thermostat.TemperatureDisplayUnits}`); } if (this.Thermostat.CurrentTemperature === undefined) { - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} CurrentTemperature: ${this.Thermostat.CurrentTemperature}`); + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + + ` CurrentTemperature: ${this.Thermostat.CurrentTemperature}`); } else { this.Thermostat.Service.updateCharacteristic(this.hap.Characteristic.CurrentTemperature, this.Thermostat.CurrentTemperature); - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} updateCharacteristic` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName} updateCharacteristic` + ` CurrentTemperature: ${this.Thermostat.CurrentTemperature}`); } if (this.HumiditySensor?.CurrentRelativeHumidity === undefined) { - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName}` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + ` CurrentRelativeHumidity: ${this.HumiditySensor?.CurrentRelativeHumidity}`); } else { this.HumiditySensor.Service.updateCharacteristic(this.hap.Characteristic.CurrentRelativeHumidity, this.HumiditySensor.CurrentRelativeHumidity); - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} updateCharacteristic` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName} updateCharacteristic` + ` CurrentRelativeHumidity: ${this.HumiditySensor.CurrentRelativeHumidity}`); } if (this.Thermostat.TargetTemperature === undefined) { - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} TargetTemperature: ${this.Thermostat.TargetTemperature}`); + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + + ` TargetTemperature: ${this.Thermostat.TargetTemperature}`); } else { this.Thermostat.Service.updateCharacteristic(this.hap.Characteristic.TargetTemperature, this.Thermostat.TargetTemperature); - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} updateCharacteristic` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName} updateCharacteristic` + ` TargetTemperature: ${this.Thermostat.TargetTemperature}`); } if (this.Thermostat.HeatingThresholdTemperature === undefined) { - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName}` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + ` HeatingThresholdTemperature: ${this.Thermostat.HeatingThresholdTemperature}`); } else { this.Thermostat.Service.updateCharacteristic(this.hap.Characteristic.HeatingThresholdTemperature, this.Thermostat.HeatingThresholdTemperature); - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} updateCharacteristic` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName} updateCharacteristic` + ` HeatingThresholdTemperature: ${this.Thermostat.HeatingThresholdTemperature}`); } if (this.Thermostat.CoolingThresholdTemperature === undefined) { - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName}` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + ` CoolingThresholdTemperature: ${this.Thermostat.CoolingThresholdTemperature}`); } else { this.Thermostat.Service.updateCharacteristic(this.hap.Characteristic.CoolingThresholdTemperature, this.Thermostat.CoolingThresholdTemperature); - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} updateCharacteristic` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName} updateCharacteristic` + ` CoolingThresholdTemperature: ${this.Thermostat.CoolingThresholdTemperature}`); } if (this.Thermostat.TargetHeatingCoolingState === undefined) { - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName}` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + ` TargetHeatingCoolingState: ${this.Thermostat.TargetHeatingCoolingState}`); } else { this.Thermostat.Service.updateCharacteristic(this.hap.Characteristic.TargetHeatingCoolingState, this.Thermostat.TargetHeatingCoolingState); - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} updateCharacteristic` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName} updateCharacteristic` + ` TargetHeatingCoolingState: ${this.Thermostat.TargetHeatingCoolingState}`); } if (this.Thermostat.CurrentHeatingCoolingState === undefined) { - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName}` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + ` CurrentHeatingCoolingState: ${this.Thermostat.CurrentHeatingCoolingState}`); } else { this.Thermostat.Service.updateCharacteristic(this.hap.Characteristic.CurrentHeatingCoolingState, this.Thermostat.CurrentHeatingCoolingState); - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} updateCharacteristic` + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName} updateCharacteristic` + ` CurrentHeatingCoolingState: ${this.Thermostat.TargetHeatingCoolingState}`); } } @@ -780,7 +797,8 @@ export class RoomSensorThermostat extends deviceBase { } async setTargetHeatingCoolingState(value: CharacteristicValue): Promise { - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} Set TargetHeatingCoolingState: ${value}`); + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + + ` Set TargetHeatingCoolingState: ${value}`); this.Thermostat.TargetHeatingCoolingState = value; @@ -798,25 +816,29 @@ export class RoomSensorThermostat extends deviceBase { } async setHeatingThresholdTemperature(value: CharacteristicValue): Promise { - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} Set HeatingThresholdTemperature: ${value}`); + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + + ` Set HeatingThresholdTemperature: ${value}`); this.Thermostat.HeatingThresholdTemperature = value; this.doThermostatUpdate.next(); } async setCoolingThresholdTemperature(value: CharacteristicValue): Promise { - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} Set CoolingThresholdTemperature: ${value}`); + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + + ` Set CoolingThresholdTemperature: ${value}`); this.Thermostat.CoolingThresholdTemperature = value; this.doThermostatUpdate.next(); } async setTargetTemperature(value: CharacteristicValue): Promise { - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} Set TargetTemperature: ${value}`); + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + + ` Set TargetTemperature: ${value}`); this.Thermostat.TargetTemperature = value; this.doThermostatUpdate.next(); } async setTemperatureDisplayUnits(value: CharacteristicValue): Promise { - this.debugLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName} Set TemperatureDisplayUnits: ${value}`); + this.debugLog(`${this.sensorAccessory?.accessoryAttribute.type} ${this.device.deviceClass} ${this.accessory.displayName}` + + ` Set TemperatureDisplayUnits: ${value}`); this.warnLog('Changing the Hardware Display Units from HomeKit is not supported.'); this.Thermostat.TemperatureDisplayUnits = this.device.units === 'Celsius' diff --git a/src/devices/thermostats.ts b/src/devices/thermostats.ts index 40bc4721..e8f02abd 100644 --- a/src/devices/thermostats.ts +++ b/src/devices/thermostats.ts @@ -127,7 +127,7 @@ export class Thermostats extends deviceBase { const maxValue = toCelsius(device.maxHeatSetpoint, Number(this.Thermostat.TemperatureDisplayUnits)); this.debugLog(`${this.device.deviceClass} ${accessory.displayName} minValue: ${minValue}, maxValue: ${maxValue}`); if (device.changeableValues!.heatCoolMode === 'Heat') { - this.debugLog(`Thermostat: ${accessory.displayName} is in "${device.changeableValues?.heatCoolMode}" mode`); + this.debugLog(`${device.deviceClass} ${accessory.displayName} is in "${device.changeableValues?.heatCoolMode}" mode`); this.Thermostat.Service .getCharacteristic(this.hap.Characteristic.TargetTemperature) .setProps({ @@ -138,10 +138,10 @@ export class Thermostats extends deviceBase { .onGet(() => { return this.Thermostat.TargetTemperature; }); - this.debugWarnLog(`Thermostat: ${accessory.displayName} (HEAT) Min Heat Setpoint: ${device.minHeatSetpoint}. Max Heat Setpoint:` + this.debugWarnLog(`${device.deviceClass} ${accessory.displayName} (HEAT) Min Heat Setpoint: ${device.minHeatSetpoint}. Max Heat Setpoint:` + ` ${device.maxHeatSetpoint} TemperatureDisplayUnits: ${this.Thermostat.TemperatureDisplayUnits}`); } else { - this.debugLog(`Thermostat: ${accessory.displayName} is in "${device.changeableValues?.heatCoolMode}" mode`); + this.debugLog(`${device.deviceClass} ${accessory.displayName} is in "${device.changeableValues?.heatCoolMode}" mode`); this.Thermostat.Service .getCharacteristic(this.hap.Characteristic.TargetTemperature) .setProps({ @@ -152,7 +152,7 @@ export class Thermostats extends deviceBase { .onGet(() => { return this.Thermostat.TargetTemperature; }); - this.debugWarnLog(`Thermostat: ${accessory.displayName} (NOT HEAT) Min Heat Setpoint: ${device.minHeatSetpoint}. Max Heat Setpoint:` + this.debugWarnLog(`${device.deviceClass} ${accessory.displayName} (NOT HEAT) Min Heat Setpoint: ${device.minHeatSetpoint}. Max Heat Setpoint:` + ` ${device.maxHeatSetpoint} TemperatureDisplayUnits: ${this.Thermostat.TemperatureDisplayUnits}`); } } @@ -218,7 +218,7 @@ export class Thermostats extends deviceBase { this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Fan Service Not Found`); } } else if (device.settings?.fan) { - this.debugLog(`Thermostat: ${accessory.displayName} Available Fan Settings ${JSON.stringify(device.settings.fan)}`); + this.debugLog(`${device.deviceClass} ${accessory.displayName} Available Fan Settings ${JSON.stringify(device.settings.fan)}`); accessory.context.Fan = accessory.context.Fan ?? {}; this.Fan = { Name: accessory.context.Fan.Name ?? `${accessory.displayName} Fan`, @@ -244,7 +244,7 @@ export class Thermostats extends deviceBase { }) .onSet(this.setTargetFanState.bind(this)); } else { - this.debugLog(`Thermostat: ${accessory.displayName} Fanv2 Service Not Added`); + this.debugLog(`${device.deviceClass} ${accessory.displayName} Fanv2 Service Not Added`); } // Initialize Humidity Sensor Service @@ -257,7 +257,7 @@ export class Thermostats extends deviceBase { this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Humidity Sensor Service Not Found`); } } else if (device.indoorHumidity) { - this.debugLog(`Thermostat: ${accessory.displayName} Add Humidity Sensor Service`); + this.debugLog(`${device.deviceClass} ${accessory.displayName} Add Humidity Sensor Service`); accessory.context.HumiditySensor = accessory.context.HumiditySensor ?? {}; this.HumiditySensor = { Name: accessory.context.HumiditySensor.Name ?? `${accessory.displayName} Humidity Sensor`, @@ -280,7 +280,7 @@ export class Thermostats extends deviceBase { }); } else { - this.debugLog(`Thermostat: ${accessory.displayName} Humidity Sensor Service Not Added`); + this.debugLog(`${device.deviceClass} ${accessory.displayName} Humidity Sensor Service Not Added`); } // Initialize StatefulProgrammableSwitch property @@ -811,7 +811,7 @@ export class Thermostats extends deviceBase { + `${toFahrenheit(Number(this.Thermostat.HeatingThresholdTemperature), Number(this.Thermostat.TemperatureDisplayUnits))} heatSetpoint`); } - this.successLog(`Room Sensor ${this.device.deviceClass} ${this.accessory.displayName}` + this.successLog(`${this.device.deviceClass} ${this.accessory.displayName}` + ` set request (${JSON.stringify(payload)}) to Resideo API.`); } @@ -1067,7 +1067,7 @@ export class Thermostats extends deviceBase { if (this.thermostatSetpointStatus === undefined) { accessory.context.thermostatSetpointStatus = device.thermostat?.thermostatSetpointStatus; this.thermostatSetpointStatus = accessory.context.thermostatSetpointStatus; - this.debugLog(`Thermostat: ${accessory.displayName} thermostatSetpointStatus: ${this.thermostatSetpointStatus}`); + this.debugLog(`${device.deviceClass} ${accessory.displayName} thermostatSetpointStatus: ${this.thermostatSetpointStatus}`); } } diff --git a/src/platform.ts b/src/platform.ts index 66dd93f9..275b39bb 100644 --- a/src/platform.ts +++ b/src/platform.ts @@ -1120,56 +1120,56 @@ export class ResideoPlatform implements DynamicPlatformPlugin { * If device level logging is turned on, log to log.warn * Otherwise send debug logs to log.debug */ - infoLog(...log: any[]): void { - if (this.enablingPlatformLogging()) { + async infoLog(...log: any[]): Promise { + if (await this.enablingPlatformLogging()) { this.log.info(String(...log)); } } - successLog(...log: any[]): void { - if (this.enablingPlatformLogging()) { + async successLog(...log: any[]): Promise { + if (await this.enablingPlatformLogging()) { this.log.success(String(...log)); } } - debugSuccessLog(...log: any[]): void { - if (this.enablingPlatformLogging()) { + async debugSuccessLog(...log: any[]): Promise { + if (await this.enablingPlatformLogging()) { if (this.platformLogging?.includes('debug')) { this.log.success('[DEBUG]', String(...log)); } } } - warnLog(...log: any[]): void { - if (this.enablingPlatformLogging()) { + async warnLog(...log: any[]): Promise { + if (await this.enablingPlatformLogging()) { this.log.warn(String(...log)); } } - debugWarnLog(...log: any[]): void { - if (this.enablingPlatformLogging()) { + async debugWarnLog(...log: any[]): Promise { + if (await this.enablingPlatformLogging()) { if (this.platformLogging?.includes('debug')) { this.log.warn('[DEBUG]', String(...log)); } } } - errorLog(...log: any[]): void { - if (this.enablingPlatformLogging()) { + async errorLog(...log: any[]): Promise { + if (await this.enablingPlatformLogging()) { this.log.error(String(...log)); } } - debugErrorLog(...log: any[]): void { - if (this.enablingPlatformLogging()) { + async debugErrorLog(...log: any[]): Promise { + if (await this.enablingPlatformLogging()) { if (this.platformLogging?.includes('debug')) { this.log.error('[DEBUG]', String(...log)); } } } - debugLog(...log: any[]): void { - if (this.enablingPlatformLogging()) { + async debugLog(...log: any[]): Promise { + if (await this.enablingPlatformLogging()) { if (this.platformLogging === 'debugMode') { this.log.debug(String(...log)); } else if (this.platformLogging === 'debug') { @@ -1178,7 +1178,7 @@ export class ResideoPlatform implements DynamicPlatformPlugin { } } - enablingPlatformLogging(): boolean { + async enablingPlatformLogging(): Promise { return this.platformLogging?.includes('debug') || this.platformLogging === 'standard'; } }