diff --git a/docs/Changelog.md b/docs/Changelog.md index 5125e33..fb9a9f7 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -2,6 +2,9 @@ All notable changes to this project will be documented in this file. This project uses [semantic versioning](https://semver.org/). +## 7.10.1 (2024-12-27) + * Housekeeping. + ## 7.10.0 (2024-12-22) * Breaking change: node 18 is no longer supported. The minimum version required for HBUP as of this release is node 20. * New feature: MQTT support for doorbell authentication, including NFC card information, when available. See the [MQTT documentation](https://github.com/hjdhjd/homebridge-unifi-protect/blob/main/docs/MQTT.md) for details. diff --git a/package-lock.json b/package-lock.json index b3ee580..b7a7688 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,18 @@ { "name": "homebridge-unifi-protect", - "version": "7.10.0", + "version": "7.10.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "homebridge-unifi-protect", - "version": "7.10.0", + "version": "7.10.1", "license": "ISC", "dependencies": { "@homebridge/plugin-ui-utils": "2.0.0", "ffmpeg-for-homebridge": "^2.1.7", - "homebridge-plugin-utils": "^1.12.0", - "unifi-protect": "^4.18.0", + "homebridge-plugin-utils": "^1.13.0", + "unifi-protect": "^4.19.0", "ws": "8.18.0" }, "devDependencies": { @@ -23,14 +23,14 @@ "homebridge": "1.8.4", "shx": "0.3.4", "typescript": "5.7.2", - "typescript-eslint": "8.18.1" + "typescript-eslint": "8.18.2" }, "engines": { "homebridge": ">=1.8.0 || >=2.0.0", "node": ">=20" }, "optionalDependencies": { - "bufferutil": "4.0.8" + "bufferutil": "4.0.9" } }, "../ffmpeg-for-homebridge": { @@ -46,57 +46,6 @@ "node": ">=18" } }, - "../homebridge-plugin-utils": { - "version": "1.11.3", - "extraneous": true, - "license": "ISC", - "dependencies": { - "mqtt": "5.10.3" - }, - "devDependencies": { - "@stylistic/eslint-plugin": "2.11.0", - "@types/node": "22.10.1", - "eslint": "^9.16.0", - "homebridge": "1.8.4", - "shx": "0.3.4", - "typescript": "5.7.2", - "typescript-eslint": "^8.17.0" - }, - "engines": { - "node": ">=18" - } - }, - "../unifi-protect": { - "version": "4.18.0", - "extraneous": true, - "license": "ISC", - "dependencies": { - "@adobe/fetch": "4.1.11", - "ws": "8.18.0" - }, - "bin": { - "ufp": "dist/util/ufp.js" - }, - "devDependencies": { - "@stylistic/eslint-plugin": "2.12.1", - "@types/node": "22.10.2", - "@types/ws": "8.5.13", - "eslint": "9.17.0", - "homebridge": "1.8.4", - "homebridge-plugin-utils": "^1.12.0", - "shx": "0.3.4", - "typedoc": "0.27.5", - "typedoc-plugin-markdown": "4.3.3", - "typescript": "5.7.2", - "typescript-eslint": "8.18.1" - }, - "engines": { - "node": ">=20" - }, - "optionalDependencies": { - "bufferutil": "4.0.8" - } - }, "node_modules/@adobe/fetch": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/@adobe/fetch/-/fetch-4.1.11.tgz", @@ -573,17 +522,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.1.tgz", - "integrity": "sha512-Ncvsq5CT3Gvh+uJG0Lwlho6suwDfUXH0HztslDf5I+F2wAFAZMRwYLEorumpKLzmO2suAXZ/td1tBg4NZIi9CQ==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.2.tgz", + "integrity": "sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.18.1", - "@typescript-eslint/type-utils": "8.18.1", - "@typescript-eslint/utils": "8.18.1", - "@typescript-eslint/visitor-keys": "8.18.1", + "@typescript-eslint/scope-manager": "8.18.2", + "@typescript-eslint/type-utils": "8.18.2", + "@typescript-eslint/utils": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -603,16 +552,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.1.tgz", - "integrity": "sha512-rBnTWHCdbYM2lh7hjyXqxk70wvon3p2FyaniZuey5TrcGBpfhVp0OxOa6gxr9Q9YhZFKyfbEnxc24ZnVbbUkCA==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.2.tgz", + "integrity": "sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.18.1", - "@typescript-eslint/types": "8.18.1", - "@typescript-eslint/typescript-estree": "8.18.1", - "@typescript-eslint/visitor-keys": "8.18.1", + "@typescript-eslint/scope-manager": "8.18.2", + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/typescript-estree": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2", "debug": "^4.3.4" }, "engines": { @@ -628,14 +577,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.1.tgz", - "integrity": "sha512-HxfHo2b090M5s2+/9Z3gkBhI6xBH8OJCFjH9MhQ+nnoZqxU3wNxkLT+VWXWSFWc3UF3Z+CfPAyqdCTdoXtDPCQ==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.2.tgz", + "integrity": "sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.1", - "@typescript-eslint/visitor-keys": "8.18.1" + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -646,14 +595,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.1.tgz", - "integrity": "sha512-jAhTdK/Qx2NJPNOTxXpMwlOiSymtR2j283TtPqXkKBdH8OAMmhiUfP0kJjc/qSE51Xrq02Gj9NY7MwK+UxVwHQ==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.2.tgz", + "integrity": "sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.18.1", - "@typescript-eslint/utils": "8.18.1", + "@typescript-eslint/typescript-estree": "8.18.2", + "@typescript-eslint/utils": "8.18.2", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -670,9 +619,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.1.tgz", - "integrity": "sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.2.tgz", + "integrity": "sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==", "dev": true, "license": "MIT", "engines": { @@ -684,14 +633,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.1.tgz", - "integrity": "sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.2.tgz", + "integrity": "sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.1", - "@typescript-eslint/visitor-keys": "8.18.1", + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -711,16 +660,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.1.tgz", - "integrity": "sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.2.tgz", + "integrity": "sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.18.1", - "@typescript-eslint/types": "8.18.1", - "@typescript-eslint/typescript-estree": "8.18.1" + "@typescript-eslint/scope-manager": "8.18.2", + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/typescript-estree": "8.18.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -735,13 +684,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.1.tgz", - "integrity": "sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.2.tgz", + "integrity": "sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.1", + "@typescript-eslint/types": "8.18.2", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -992,10 +941,11 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/bufferutil": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", - "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.9.tgz", + "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", "hasInstallScript": true, + "license": "MIT", "optional": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -1653,9 +1603,9 @@ } }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", "dev": true, "license": "ISC", "dependencies": { @@ -2084,9 +2034,9 @@ } }, "node_modules/homebridge-plugin-utils": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/homebridge-plugin-utils/-/homebridge-plugin-utils-1.12.0.tgz", - "integrity": "sha512-+zRpW72lGk8eHEINHTrGcFU/K8sFhDn1eYxqjjq2hNDWCjiR7yVaF2Zb/janA41p9zbCCbJEeqMY24PdzzeIYg==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/homebridge-plugin-utils/-/homebridge-plugin-utils-1.13.0.tgz", + "integrity": "sha512-uMbK0klMPG+PKK45L9HGtk+90yiva7i+HA/9jK2oofDdc2dGQQSN0BJsneLQZEUQBhJZTmx23q82jDewkfJYuw==", "license": "ISC", "dependencies": { "mqtt": "5.10.3" @@ -3125,9 +3075,9 @@ "license": "MIT" }, "node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.6.0.tgz", + "integrity": "sha512-cbAdYt0VcnpN2Bekq7PU+k363ZRsPwJoEEJOEtSJQlJXzwaxt3FIo/uL+KeDSGIjJqtkwyge4KQgD2S2kd+CQw==", "license": "MIT", "dependencies": { "abort-controller": "^3.0.0", @@ -3819,15 +3769,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.18.1.tgz", - "integrity": "sha512-Mlaw6yxuaDEPQvb/2Qwu3/TfgeBHy9iTJ3mTwe7OvpPmF6KPQjVOfGyEJpPv6Ez2C34OODChhXrzYw/9phI0MQ==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.18.2.tgz", + "integrity": "sha512-KuXezG6jHkvC3MvizeXgupZzaG5wjhU3yE8E7e6viOvAvD9xAWYp8/vy0WULTGe9DYDWcQu7aW03YIV3mSitrQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.18.1", - "@typescript-eslint/parser": "8.18.1", - "@typescript-eslint/utils": "8.18.1" + "@typescript-eslint/eslint-plugin": "8.18.2", + "@typescript-eslint/parser": "8.18.2", + "@typescript-eslint/utils": "8.18.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3848,9 +3798,9 @@ "license": "MIT" }, "node_modules/unifi-protect": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/unifi-protect/-/unifi-protect-4.18.0.tgz", - "integrity": "sha512-15rV3XR6PjLiLUqlfdZlqaBMqW0zypxcTq7sDb4H8EYISEUNcYz/Fiv/qALIuxOP5qDQZ44/tHrt91ZzkRHUtQ==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/unifi-protect/-/unifi-protect-4.19.0.tgz", + "integrity": "sha512-Rl1wzMwk3yDngFd3RYdS7nVc8Fd7Hqh2My93p1/YsO7gl6VXowcp7oiQUeFkTH0AZbKEjW1e1SE3vQA/e2gyCA==", "license": "ISC", "dependencies": { "@adobe/fetch": "4.1.11", @@ -3863,7 +3813,7 @@ "node": ">=20" }, "optionalDependencies": { - "bufferutil": "4.0.8" + "bufferutil": "4.0.9" } }, "node_modules/universalify": { diff --git a/package.json b/package.json index 696a430..3b98ae9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homebridge-unifi-protect", - "version": "7.10.0", + "version": "7.10.1", "displayName": "Homebridge UniFi Protect", "description": "Homebridge UniFi Protect plugin providing complete HomeKit integration for the UniFi Protect ecosystem with full support for most features including autoconfiguration, motion detection, multiple controllers, and realtime updates.", "author": { @@ -77,8 +77,8 @@ "dependencies": { "@homebridge/plugin-ui-utils": "2.0.0", "ffmpeg-for-homebridge": "^2.1.7", - "homebridge-plugin-utils": "^1.12.0", - "unifi-protect": "^4.18.0", + "homebridge-plugin-utils": "^1.13.0", + "unifi-protect": "^4.19.0", "ws": "8.18.0" }, "devDependencies": { @@ -89,9 +89,9 @@ "homebridge": "1.8.4", "shx": "0.3.4", "typescript": "5.7.2", - "typescript-eslint": "8.18.1" + "typescript-eslint": "8.18.2" }, "optionalDependencies": { - "bufferutil": "4.0.8" + "bufferutil": "4.0.9" } } diff --git a/src/protect-nvr.ts b/src/protect-nvr.ts index 64ab060..7daff75 100644 --- a/src/protect-nvr.ts +++ b/src/protect-nvr.ts @@ -461,6 +461,7 @@ export class ProtectNvr { if(!this.deviceRemovalQueue[accessory.UUID]) { this.deviceRemovalQueue[accessory.UUID] = Date.now(); + this.log.info("%s: Delaying device removal for at least %s second%s.", accessory.displayName, delayInterval, delayInterval > 1 ? "s" : ""); continue;