From 4ff4198078584504db3f08c3759bedd02fa66450 Mon Sep 17 00:00:00 2001 From: SeydX Date: Sun, 24 Apr 2022 02:20:27 +0200 Subject: [PATCH] v1.1.15 --- CHANGELOG.md | 13 + package-lock.json | 301 +++++++++++++----- package.json | 8 +- src/controller/camera/utils/camera.utils.js | 2 +- src/controller/motion/motion.controller.js | 10 + src/services/config/config.defaults.js | 2 + ui/package-lock.json | 154 +++------ ui/package.json | 4 +- ui/src/components/navbar.vue | 1 - ui/src/components/sidebar.vue | 4 +- ui/src/i18n/locale/de.json | 2 +- ui/src/i18n/locale/en.json | 2 +- ui/src/i18n/locale/es.json | 2 +- ui/src/i18n/locale/fr.json | 2 +- ui/src/i18n/locale/nl.json | 2 +- ui/src/i18n/locale/th.json | 2 +- ui/src/router/index.js | 8 +- ui/src/views/Plugins/Plugins.vue | 140 ++++++++ ui/src/views/Recordings/Recordings.vue | 4 + ui/src/views/Settings/subpages/account.vue | 83 ++--- ui/src/views/Settings/subpages/appearance.vue | 4 +- ui/src/views/Settings/subpages/backup.vue | 4 +- ui/src/views/Settings/subpages/cameras.vue | 4 +- ui/src/views/Settings/subpages/interface.vue | 4 +- .../views/Settings/subpages/notifications.vue | 4 +- ui/src/views/Settings/subpages/recordings.vue | 4 +- .../views/Settings/subpages/rekognition.vue | 4 +- ui/src/views/Settings/subpages/system.vue | 54 ++-- ui/src/views/Settings/subpages/user.vue | 2 +- ui/src/views/Timeline/Timeline.vue | 134 -------- 30 files changed, 534 insertions(+), 430 deletions(-) create mode 100644 ui/src/views/Plugins/Plugins.vue delete mode 100644 ui/src/views/Timeline/Timeline.vue diff --git a/CHANGELOG.md b/CHANGELOG.md index d95769bc..1b2c1dd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,19 @@ # Changelog All notable changes to this project will be documented in this file. +# v1.1.15 - 2022-04-24 + +## Notable Changes +- **Config:** + - Added `"motionDelay"` parameter to the camera block. Motion Delay: The number of seconds to wait to trigger the motion sensor after a motion event is received from e.g. MQTT, SMTP, FTP or HTTP (this can be useful if you use an external motion sensor and the camera feed lags several seconds behind the event). + +## Other Changes +- Minor UI improvements +- Bump dependencies + +## Bugfixes +- Fixed an issue where replacing deprecated ffmpeg args failed due to invalid ffmpeg version + # v1.1.14 - 2022-04-23 ## Other Changes diff --git a/package-lock.json b/package-lock.json index ed963f56..f46dbea3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "camera.ui", - "version": "1.1.14", + "version": "1.1.15", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "camera.ui", - "version": "1.1.14", + "version": "1.1.15", "funding": [ { "type": "paypal", @@ -56,7 +56,7 @@ "ping": "^0.4.1", "pipe2pam": "^0.6.2", "smtp-server": "^3.10.0", - "socket.io": "4.4.1", + "socket.io": "^4.5.0", "socketio-jwt": "^4.6.2", "swagger-jsdoc": "^6.2.1", "swagger-ui-express": "^4.3.0", @@ -72,7 +72,7 @@ "@babel/eslint-parser": "^7.17.0", "@babel/eslint-plugin": "^7.17.7", "concurrently": "6.5.1", - "eslint": "^8.13.0", + "eslint": "^8.14.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^26.1.5", @@ -82,7 +82,7 @@ "jest-jasmine2": "^27.5.1", "nodemon": "^2.0.15", "prettier": "^2.6.2", - "supertest": "6.1.6" + "supertest": "6.2.2" }, "engines": { "node": ">=14.18.1" @@ -1549,9 +1549,9 @@ "dev": true }, "node_modules/@eslint/eslintrc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", - "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.2.tgz", + "integrity": "sha512-lTVWHs7O2hjBFZunXTZYnYqtB9GakA1lnxIf+gKq2nY5gxkkNi/lQvveW6t8gFdOHTg6nG50Xs95PrLqVpcaLg==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -2733,6 +2733,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, "node_modules/asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -3918,6 +3924,16 @@ "node": ">=8" } }, + "node_modules/dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true, + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, "node_modules/dicer": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", @@ -4190,9 +4206,9 @@ } }, "node_modules/engine.io": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz", - "integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", @@ -4434,12 +4450,12 @@ } }, "node_modules/eslint": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz", - "integrity": "sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.14.0.tgz", + "integrity": "sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.2.1", + "@eslint/eslintrc": "^1.2.2", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -5280,15 +5296,32 @@ "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==" }, "node_modules/formidable": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", - "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", - "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", + "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==", "dev": true, + "dependencies": { + "dezalgo": "1.0.3", + "hexoid": "1.0.0", + "once": "1.4.0", + "qs": "6.9.3" + }, "funding": { "url": "https://ko-fi.com/tunnckoCore/commissions" } }, + "node_modules/formidable/node_modules/qs": { + "version": "6.9.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", + "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", + "dev": true, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -5823,6 +5856,15 @@ "node": ">= 6" } }, + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -10022,15 +10064,15 @@ } }, "node_modules/socket.io": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", - "integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.0.tgz", + "integrity": "sha512-slTYqU2jCgMjXwresG8grhUi/cC6GjzmcfqArzaH3BN/9I/42eZk9yamNvZJdBfTubkjEdKAKs12NEztId+bUA==", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.1.0", - "socket.io-adapter": "~2.3.3", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", "socket.io-parser": "~4.0.4" }, "engines": { @@ -10038,9 +10080,9 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", - "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" }, "node_modules/socket.io-parser": { "version": "4.0.4", @@ -10359,26 +10401,40 @@ } }, "node_modules/superagent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz", - "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==", - "deprecated": "Please upgrade to v7.0.1+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at . Thanks to @shadowgate15, @spence-s, and @niftylettuce. Superagent is sponsored by Forward Email @ ", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.2.tgz", + "integrity": "sha512-o9/fP6dww7a4xmEF5a484o2rG34UUGo8ztDlv7vbCWuqPhpndMi0f7eXxdlryk5U12Kzy46nh8eNpLAJ93Alsg==", + "deprecated": "Deprecated due to bug in CI build https://github.com/visionmedia/superagent/pull/1677\\#issuecomment-1081361876", "dev": true, "dependencies": { "component-emitter": "^1.3.0", - "cookiejar": "^2.1.2", - "debug": "^4.1.1", - "fast-safe-stringify": "^2.0.7", - "form-data": "^3.0.0", - "formidable": "^1.2.2", + "cookiejar": "^2.1.3", + "debug": "^4.3.3", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.0.1", "methods": "^1.1.2", - "mime": "^2.4.6", - "qs": "^6.9.4", + "mime": "^2.5.0", + "qs": "^6.10.1", "readable-stream": "^3.6.0", - "semver": "^7.3.2" + "semver": "^7.3.5" + }, + "engines": { + "node": ">=6.4.0 <13 || >=14" + } + }, + "node_modules/superagent/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">= 7.0.0" + "node": ">= 6" } }, "node_modules/superagent/node_modules/mime": { @@ -10393,6 +10449,21 @@ "node": ">=4.0.0" } }, + "node_modules/superagent/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/superagent/node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -10408,9 +10479,9 @@ } }, "node_modules/superagent/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -10423,13 +10494,13 @@ } }, "node_modules/supertest": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.1.6.tgz", - "integrity": "sha512-0hACYGNJ8OHRg8CRITeZOdbjur7NLuNs0mBjVhdpxi7hP6t3QIbOzLON5RTUmZcy2I9riuII3+Pr2C7yztrIIg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.2.tgz", + "integrity": "sha512-wCw9WhAtKJsBvh07RaS+/By91NNE0Wh0DN19/hWPlBOU8tAfOtbZoVSV4xXeoKoxgPx0rx2y+y+8660XtE7jzg==", "dev": true, "dependencies": { "methods": "^1.1.2", - "superagent": "^6.1.0" + "superagent": "^7.1.0" }, "engines": { "node": ">=6.0.0" @@ -12605,9 +12676,9 @@ "dev": true }, "@eslint/eslintrc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", - "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.2.tgz", + "integrity": "sha512-lTVWHs7O2hjBFZunXTZYnYqtB9GakA1lnxIf+gKq2nY5gxkkNi/lQvveW6t8gFdOHTg6nG50Xs95PrLqVpcaLg==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -13536,6 +13607,12 @@ "es-abstract": "^1.19.0" } }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, "asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -14420,6 +14497,16 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, "dicer": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", @@ -14640,9 +14727,9 @@ } }, "engine.io": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz", - "integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", "requires": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", @@ -14814,12 +14901,12 @@ } }, "eslint": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz", - "integrity": "sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.14.0.tgz", + "integrity": "sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.2.1", + "@eslint/eslintrc": "^1.2.2", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -15453,10 +15540,24 @@ "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==" }, "formidable": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", - "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", + "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==", + "dev": true, + "requires": { + "dezalgo": "1.0.3", + "hexoid": "1.0.0", + "once": "1.4.0", + "qs": "6.9.3" + }, + "dependencies": { + "qs": { + "version": "6.9.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", + "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", + "dev": true + } + } }, "forwarded": { "version": "0.2.0", @@ -15840,6 +15941,12 @@ } } }, + "hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "dev": true + }, "hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -19019,22 +19126,22 @@ } }, "socket.io": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", - "integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.0.tgz", + "integrity": "sha512-slTYqU2jCgMjXwresG8grhUi/cC6GjzmcfqArzaH3BN/9I/42eZk9yamNvZJdBfTubkjEdKAKs12NEztId+bUA==", "requires": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.1.0", - "socket.io-adapter": "~2.3.3", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", "socket.io-parser": "~4.0.4" } }, "socket.io-adapter": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", - "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" }, "socket.io-parser": { "version": "4.0.4", @@ -19293,30 +19400,50 @@ "dev": true }, "superagent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz", - "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.2.tgz", + "integrity": "sha512-o9/fP6dww7a4xmEF5a484o2rG34UUGo8ztDlv7vbCWuqPhpndMi0f7eXxdlryk5U12Kzy46nh8eNpLAJ93Alsg==", "dev": true, "requires": { "component-emitter": "^1.3.0", - "cookiejar": "^2.1.2", - "debug": "^4.1.1", - "fast-safe-stringify": "^2.0.7", - "form-data": "^3.0.0", - "formidable": "^1.2.2", + "cookiejar": "^2.1.3", + "debug": "^4.3.3", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.0.1", "methods": "^1.1.2", - "mime": "^2.4.6", - "qs": "^6.9.4", + "mime": "^2.5.0", + "qs": "^6.10.1", "readable-stream": "^3.6.0", - "semver": "^7.3.2" + "semver": "^7.3.5" }, "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, "mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -19329,9 +19456,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -19340,13 +19467,13 @@ } }, "supertest": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.1.6.tgz", - "integrity": "sha512-0hACYGNJ8OHRg8CRITeZOdbjur7NLuNs0mBjVhdpxi7hP6t3QIbOzLON5RTUmZcy2I9riuII3+Pr2C7yztrIIg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.2.tgz", + "integrity": "sha512-wCw9WhAtKJsBvh07RaS+/By91NNE0Wh0DN19/hWPlBOU8tAfOtbZoVSV4xXeoKoxgPx0rx2y+y+8660XtE7jzg==", "dev": true, "requires": { "methods": "^1.1.2", - "superagent": "^6.1.0" + "superagent": "^7.1.0" } }, "supports-color": { diff --git a/package.json b/package.json index 20739eae..75fa5494 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "camera.ui", - "version": "1.1.14", + "version": "1.1.15", "description": "NVR like user interface for RTSP capable cameras.", "author": "SeydX (https://github.com/SeydX/camera.ui)", "scripts": { @@ -49,7 +49,7 @@ "ping": "^0.4.1", "pipe2pam": "^0.6.2", "smtp-server": "^3.10.0", - "socket.io": "4.4.1", + "socket.io": "^4.5.0", "socketio-jwt": "^4.6.2", "swagger-jsdoc": "^6.2.1", "swagger-ui-express": "^4.3.0", @@ -62,7 +62,7 @@ "@babel/eslint-parser": "^7.17.0", "@babel/eslint-plugin": "^7.17.7", "concurrently": "6.5.1", - "eslint": "^8.13.0", + "eslint": "^8.14.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^26.1.5", @@ -72,7 +72,7 @@ "jest-jasmine2": "^27.5.1", "nodemon": "^2.0.15", "prettier": "^2.6.2", - "supertest": "6.1.6" + "supertest": "6.2.2" }, "optionalDependencies": { "osx-temperature-sensor": "^1.0.7" diff --git a/src/controller/camera/utils/camera.utils.js b/src/controller/camera/utils/camera.utils.js index b045d3b4..c4ff2584 100644 --- a/src/controller/camera/utils/camera.utils.js +++ b/src/controller/camera/utils/camera.utils.js @@ -357,7 +357,7 @@ export const generateVideoConfig = (videoConfig) => { }; export const checkDeprecatedFFmpegArguments = (ffmpegVersion, ffmpegArguments) => { - if (!ffmpegVersion) { + if (!ffmpegVersion || !compareVersions.validate(ffmpegVersion)) { return ffmpegArguments; } diff --git a/src/controller/motion/motion.controller.js b/src/controller/motion/motion.controller.js index 51845e24..4b8d1aa8 100644 --- a/src/controller/motion/motion.controller.js +++ b/src/controller/motion/motion.controller.js @@ -20,6 +20,7 @@ import LoggerService from '../../services/logger/logger.service.js'; import Database from '../../api/database.js'; const { log } = LoggerService; +const timeout = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const toDotNot = (input, parentKey) => // eslint-disable-next-line unicorn/no-array-reduce, unicorn/prefer-object-from-entries @@ -690,6 +691,15 @@ export default class MotionController { } if (camera) { + if (camera.motionDelay > 0) { + log.info( + `Movement delay (${camera.motionDelay}s) is active, wait before triggering the event - Trigger: ${triggerType} - State: ${state} - Event: ${event}`, + camera.name + ); + + await timeout(camera.motionDelay * 1000); + } + const settingsDatabase = await Database.interfaceDB.chain.get('settings').cloneDeep().value(); const cameraSettings = settingsDatabase?.cameras.find((cam) => cam.name === cameraName); const atHome = settingsDatabase?.general?.atHome || false; diff --git a/src/services/config/config.defaults.js b/src/services/config/config.defaults.js index e131a14a..2f06d874 100644 --- a/src/services/config/config.defaults.js +++ b/src/services/config/config.defaults.js @@ -178,6 +178,8 @@ export class ConfigSetup { camera.motionTimeout = camera.motionTimeout === undefined || !(camera.motionTimeout >= 0) ? 15 : camera.motionTimeout; + camera.motionDelay = camera.motionDelay && camera.motionDelay <= 10 ? camera.motionDelay : undefined; + // validate prebufferLength camera.prebufferLength = camera.prebufferLength >= 4 && camera.prebufferLength <= 8 ? camera.prebufferLength : 4; diff --git a/ui/package-lock.json b/ui/package-lock.json index 9dbdf3a7..6e427190 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -16,7 +16,7 @@ "file-saver": "^2.0.5", "gridstack": "^5.0.0", "register-service-worker": "^1.7.2", - "socket.io-client": "4.4.1", + "socket.io-client": "4.5.0", "strip-ansi": "^7.0.1", "swiper": "4.5.1", "v-jsoneditor": "^1.4.5", @@ -48,7 +48,7 @@ "@vue/eslint-config-prettier": "6.0.0", "autoprefixer": "9.8.8", "babel-eslint": "^10.1.0", - "core-js": "^3.21.1", + "core-js": "^3.21.2", "eslint": "6.7.2", "eslint-plugin-prettier": "3.3.1", "eslint-plugin-vue": "7.19.1", @@ -1868,9 +1868,9 @@ } }, "node_modules/@socket.io/component-emitter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz", - "integrity": "sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" }, "node_modules/@soda/friendly-errors-webpack-plugin": { "version": "1.8.1", @@ -3725,11 +3725,6 @@ "babylon": "bin/babylon.js" } }, - "node_modules/backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -5344,9 +5339,9 @@ } }, "node_modules/core-js": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz", - "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==", + "version": "3.22.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.2.tgz", + "integrity": "sha512-Z5I2vzDnEIqO2YhELVMFcL1An2CIsFe9Q7byZhs8c/QxummxZlAHw33TUHbIte987LkisOgL0LwQ1P9D6VISnA==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -6474,19 +6469,15 @@ } }, "node_modules/engine.io-client": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.1.1.tgz", - "integrity": "sha512-V05mmDo4gjimYW+FGujoGmmmxRaDsrVr7AXA3ZIfa04MWM1jOfZfUwou0oNqhNwy/votUDvGDt4JA4QF4e0b4g==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.1.tgz", + "integrity": "sha512-5cu7xubVxEwoB6O9hJ6Zfu990yBVjXfyMlE1ZvfO5L8if3Kvc9bgDNEapV0C5pMp+5Om1UZFnljxoOuFm6dBKA==", "dependencies": { - "@socket.io/component-emitter": "~3.0.0", + "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", - "engine.io-parser": "~5.0.0", - "has-cors": "1.1.0", - "parseqs": "0.0.6", - "parseuri": "0.0.6", + "engine.io-parser": "~5.0.3", "ws": "~8.2.3", - "xmlhttprequest-ssl": "~2.0.0", - "yeast": "0.1.2" + "xmlhttprequest-ssl": "~2.0.0" } }, "node_modules/engine.io-parser": { @@ -8022,11 +8013,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" - }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -11303,16 +11289,6 @@ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true }, - "node_modules/parseqs": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", - "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" - }, - "node_modules/parseuri": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", - "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -13966,27 +13942,25 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "node_modules/socket.io-client": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.4.1.tgz", - "integrity": "sha512-N5C/L5fLNha5Ojd7Yeb/puKcPWWcoB/A09fEjjNsg91EDVr5twk/OEyO6VT9dlLSUNY85NpW6KBhVMvaLKQ3vQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.0.tgz", + "integrity": "sha512-HW61c1G7OrYGxaI79WRn17+b03iBCdvhBj4iqyXHBoL5M8w2MSO/vChsjA93knG4GYEai1/vbXWJna9dzxXtSg==", "dependencies": { - "@socket.io/component-emitter": "~3.0.0", - "backo2": "~1.0.2", + "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.1.1", - "parseuri": "0.0.6", - "socket.io-parser": "~4.1.1" + "engine.io-client": "~6.2.1", + "socket.io-parser": "~4.2.0" }, "engines": { "node": ">=10.0.0" } }, "node_modules/socket.io-parser": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.1.2.tgz", - "integrity": "sha512-j3kk71QLJuyQ/hh5F/L2t1goqzdTL0gvDzuhTuNSwihfuFUrcSji0qFZmJJPtG6Rmug153eOPsUizeirf1IIog==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.0.tgz", + "integrity": "sha512-tLfmEwcEwnlQTxFB7jibL/q2+q8dlVQzj4JdRLJ/W/G1+Fu9VSxCx1Lo+n1HvXxKnM//dUuD0xgiA7tQf57Vng==", "dependencies": { - "@socket.io/component-emitter": "~3.0.0", + "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" }, "engines": { @@ -18327,11 +18301,6 @@ "node": ">=10" } }, - "node_modules/yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" - }, "node_modules/yorkie": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", @@ -19680,9 +19649,9 @@ "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==" }, "@socket.io/component-emitter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz", - "integrity": "sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" }, "@soda/friendly-errors-webpack-plugin": { "version": "1.8.1", @@ -21217,11 +21186,6 @@ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" - }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -22515,9 +22479,9 @@ } }, "core-js": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz", - "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==" + "version": "3.22.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.2.tgz", + "integrity": "sha512-Z5I2vzDnEIqO2YhELVMFcL1An2CIsFe9Q7byZhs8c/QxummxZlAHw33TUHbIte987LkisOgL0LwQ1P9D6VISnA==" }, "core-js-compat": { "version": "3.21.1", @@ -23434,19 +23398,15 @@ } }, "engine.io-client": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.1.1.tgz", - "integrity": "sha512-V05mmDo4gjimYW+FGujoGmmmxRaDsrVr7AXA3ZIfa04MWM1jOfZfUwou0oNqhNwy/votUDvGDt4JA4QF4e0b4g==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.1.tgz", + "integrity": "sha512-5cu7xubVxEwoB6O9hJ6Zfu990yBVjXfyMlE1ZvfO5L8if3Kvc9bgDNEapV0C5pMp+5Om1UZFnljxoOuFm6dBKA==", "requires": { - "@socket.io/component-emitter": "~3.0.0", + "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", - "engine.io-parser": "~5.0.0", - "has-cors": "1.1.0", - "parseqs": "0.0.6", - "parseuri": "0.0.6", + "engine.io-parser": "~5.0.3", "ws": "~8.2.3", - "xmlhttprequest-ssl": "~2.0.0", - "yeast": "0.1.2" + "xmlhttprequest-ssl": "~2.0.0" } }, "engine.io-parser": { @@ -24623,11 +24583,6 @@ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -27205,16 +27160,6 @@ } } }, - "parseqs": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", - "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" - }, - "parseuri": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", - "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" - }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -29400,24 +29345,22 @@ } }, "socket.io-client": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.4.1.tgz", - "integrity": "sha512-N5C/L5fLNha5Ojd7Yeb/puKcPWWcoB/A09fEjjNsg91EDVr5twk/OEyO6VT9dlLSUNY85NpW6KBhVMvaLKQ3vQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.0.tgz", + "integrity": "sha512-HW61c1G7OrYGxaI79WRn17+b03iBCdvhBj4iqyXHBoL5M8w2MSO/vChsjA93knG4GYEai1/vbXWJna9dzxXtSg==", "requires": { - "@socket.io/component-emitter": "~3.0.0", - "backo2": "~1.0.2", + "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.1.1", - "parseuri": "0.0.6", - "socket.io-parser": "~4.1.1" + "engine.io-client": "~6.2.1", + "socket.io-parser": "~4.2.0" } }, "socket.io-parser": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.1.2.tgz", - "integrity": "sha512-j3kk71QLJuyQ/hh5F/L2t1goqzdTL0gvDzuhTuNSwihfuFUrcSji0qFZmJJPtG6Rmug153eOPsUizeirf1IIog==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.0.tgz", + "integrity": "sha512-tLfmEwcEwnlQTxFB7jibL/q2+q8dlVQzj4JdRLJ/W/G1+Fu9VSxCx1Lo+n1HvXxKnM//dUuD0xgiA7tQf57Vng==", "requires": { - "@socket.io/component-emitter": "~3.0.0", + "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" } }, @@ -32854,11 +32797,6 @@ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" - }, "yorkie": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", diff --git a/ui/package.json b/ui/package.json index d55233e8..1542575f 100644 --- a/ui/package.json +++ b/ui/package.json @@ -16,7 +16,7 @@ "file-saver": "^2.0.5", "gridstack": "^5.0.0", "register-service-worker": "^1.7.2", - "socket.io-client": "4.4.1", + "socket.io-client": "4.5.0", "strip-ansi": "^7.0.1", "swiper": "4.5.1", "v-jsoneditor": "^1.4.5", @@ -48,7 +48,7 @@ "@vue/eslint-config-prettier": "6.0.0", "autoprefixer": "9.8.8", "babel-eslint": "^10.1.0", - "core-js": "^3.21.1", + "core-js": "^3.21.2", "eslint": "6.7.2", "eslint-plugin-prettier": "3.3.1", "eslint-plugin-vue": "7.19.1", diff --git a/ui/src/components/navbar.vue b/ui/src/components/navbar.vue index 91eec2e4..9ba59650 100644 --- a/ui/src/components/navbar.vue +++ b/ui/src/components/navbar.vue @@ -8,7 +8,6 @@ v-btn.text-default.included(@click="toggleNavi" icon height="38px" width="38px") v-icon {{ icons['mdiMenu'] }} .tw-flex.tw-ml-auto(v-if="checkLevel('notifications:access')") - v-badge(:value="notSize" :dot="notSize < 1" :content="notSize" color="var(--cui-primary)" offset-x="20" offset-y="20" bordered overlap) template(v-slot:badge) .badge-text.tw-flex.tw-justify-center.tw-items-center.tw-h-full.tw-w-full diff --git a/ui/src/components/sidebar.vue b/ui/src/components/sidebar.vue index 330e97ba..3468cd0c 100644 --- a/ui/src/components/sidebar.vue +++ b/ui/src/components/sidebar.vue @@ -136,7 +136,7 @@ import { mdiImageMultiple, mdiScript, mdiTextBoxOutline, - mdiTimelineOutline, + mdiPuzzle, mdiTune, mdiViewDashboard, } from '@mdi/js'; @@ -172,8 +172,8 @@ export default { 'mdi-console': mdiConsole, 'mdi-grid-large': mdiGridLarge, 'mdi-image-multiple': mdiImageMultiple, + 'mdi-puzzle': mdiPuzzle, 'mdi-script': mdiScript, - 'mdi-timeline-outline': mdiTimelineOutline, 'mdi-text-box-outline': mdiTextBoxOutline, 'mdi-view-dashboard': mdiViewDashboard, }, diff --git a/ui/src/i18n/locale/de.json b/ui/src/i18n/locale/de.json index eeb79760..1ddb024e 100644 --- a/ui/src/i18n/locale/de.json +++ b/ui/src/i18n/locale/de.json @@ -313,6 +313,7 @@ "pink": "Pink", "pixel_difference": "Pixel/Farb Differenz", "pixel_difference_info": "Der Farbunterschied, der erforderlich ist, um eine Bewegung auf einem Pixel auszulösen (je kleiner der Wert desto kleiner der Farbunterschied und je größer der Wert desto größer der Farbunterschied der gebraucht wird um es als Bewegung zu registrieren)", + "plugins": "Plugins", "port": "Port", "prebuffering": "Vorpuffern", "prebuffering_info": "Enables camera video prebuffering.", @@ -441,7 +442,6 @@ "themes": "Themen", "thursday": "Donnerstag", "time": "Zeit", - "timeline": "Zeitleiste", "timeout": "Zeitüberschreitung", "timeout_info": "Socket TCP I/O timeout in seconds. If you have problems with hanging FFmpeg processes in the background, you can enter any value here to stop the process automatically after the entered time, if no response comes (-stimeout).", "timerange": "Zeitspanne", diff --git a/ui/src/i18n/locale/en.json b/ui/src/i18n/locale/en.json index e3a88499..a228c85b 100644 --- a/ui/src/i18n/locale/en.json +++ b/ui/src/i18n/locale/en.json @@ -312,6 +312,7 @@ "pink": "Pink", "pixel_difference": "Pixel/Color Difference", "pixel_difference_info": "The color difference required to trigger motion on a pixel (the smaller the value the smaller the color difference and the larger the value the larger the color difference needed to register it as movement)", + "plugins": "Plugins", "port": "Port", "prebuffering": "Prebuffering", "prebuffering_info": "Enables camera video prebuffering.", @@ -440,7 +441,6 @@ "themes": "Themes", "thursday": "Thursday", "time": "Time", - "timeline": "Timeline", "timeout": "Timeout", "timeout_info": "Socket TCP I/O timeout in seconds. If you have problems with hanging FFmpeg processes in the background, you can enter any value here to stop the process automatically after the entered time, if no response comes (-stimeout).", "timerange": "Time Range", diff --git a/ui/src/i18n/locale/es.json b/ui/src/i18n/locale/es.json index bdd4210f..534fbcc6 100644 --- a/ui/src/i18n/locale/es.json +++ b/ui/src/i18n/locale/es.json @@ -312,6 +312,7 @@ "pink": "Rosa", "pixel_difference": "Pixel/Color Difference", "pixel_difference_info": "The color difference required to trigger motion on a pixel (the smaller the value the smaller the color difference and the larger the value the larger the color difference needed to register it as movement)", + "plugins": "Plugins", "port": "Puerto", "prebuffering": "Prebuffering", "prebuffering_info": "Enables camera video prebuffering.", @@ -440,7 +441,6 @@ "themes": "Temas", "thursday": "Jueves", "time": "Tiempo", - "timeline": "Timeline", "timeout": "Timeout", "timeout_info": "Socket TCP I/O timeout in seconds. If you have problems with hanging FFmpeg processes in the background, you can enter any value here to stop the process automatically after the entered time, if no response comes (-stimeout).", "timerange": "Time Range", diff --git a/ui/src/i18n/locale/fr.json b/ui/src/i18n/locale/fr.json index 85581e6c..b11e2454 100644 --- a/ui/src/i18n/locale/fr.json +++ b/ui/src/i18n/locale/fr.json @@ -312,6 +312,7 @@ "pink": "Rose", "pixel_difference": "Différence Pixel/Couleur", "pixel_difference_info": "La différence de couleur requise pour déclencher le mouvement sur un pixel (plus petite est la valeur, plus petite est la différence de couleur et plus grand est la valeur, plus grande est la différence de couleur nécessaire pour être considérée comme un mouvement)", + "plugins": "Plugins", "port": "Port", "prebuffering": "Pré-buffering", "prebuffering_info": "Active le Pré-buffering sur la caméra.", @@ -440,7 +441,6 @@ "themes": "Thèmes", "thursday": "Jeudi", "time": "Temps", - "timeline": "Timeline", "timeout": "Délai d'expiration", "timeout_info": "Délai d'expiration des E/S du socket TCP en secondes. Si vous avez des problèmes de processus FFmpeg bloqués en arrière-plan, vous pouvez entrer une valeur ici pour stopper le processus automatiquement après le temps désiré si aucune réponse n'arrive (-stimeout).", "timerange": "Time Range", diff --git a/ui/src/i18n/locale/nl.json b/ui/src/i18n/locale/nl.json index 5dc2f7f9..8d794ee3 100644 --- a/ui/src/i18n/locale/nl.json +++ b/ui/src/i18n/locale/nl.json @@ -312,6 +312,7 @@ "pink": "Roze", "pixel_difference": "Pixel/Kleur Verschil", "pixel_difference_info": "Het kleurverschil dat nodig is om beweging op een pixel te veroorzaken (Hoe kleiner de waarde, hoe kleiner het kleurverschil en hoe groter de waarde, hoe groter het kleurverschil dat nodig is om het als beweging te registreren)", + "plugins": "Plugins", "port": "Port", "prebuffering": "Prebuffering", "prebuffering_info": "Enables camera video prebuffering.", @@ -440,7 +441,6 @@ "themes": "Themes", "thursday": "Donderdag", "time": "Tijd", - "timeline": "Timeline", "timeout": "Timeout", "timeout_info": "Socket TCP I/O timeout in seconds. If you have problems with hanging FFmpeg processes in the background, you can enter any value here to stop the process automatically after the entered time, if no response comes (-stimeout).", "timerange": "Time Range", diff --git a/ui/src/i18n/locale/th.json b/ui/src/i18n/locale/th.json index b52b39a4..5a93b912 100644 --- a/ui/src/i18n/locale/th.json +++ b/ui/src/i18n/locale/th.json @@ -315,6 +315,7 @@ "pink": "สีชมพู", "pixel_difference": "ความแตกต่างของพิกเซล/สี", "pixel_difference_info": "ความแตกต่างของสีที่จำเป็นในการกระตุ้นการเคลื่อนไหวบนพิกเซล (ยิ่งค่าน้อย ความแตกต่างของสีจะน้อยลง และค่าที่มากขึ้น ความแตกต่างของสีก็จะยิ่งมากขึ้นในการบันทึกการเคลื่อนไหว)", + "plugins": "Plugins", "port": "พอร์ต", "prebuffering": "บัฟเฟอร์ล่วงหน้า", "prebuffering_info": "เปิดใช้งานการบัฟเฟอร์วิดีโอล่วงหน้าของกล้อง", @@ -443,7 +444,6 @@ "themes": "ธีม", "thursday": "วันพฤหัสบดี", "time": "เวลา", - "timeline": "Timeline", "timeout": "หมดเวลา", "timeout_info": "ซ็อกเก็ต TCP I/O หมดเวลาในไม่กี่วินาที หากคุณมีปัญหากับการหยุดทำงาน FFmpeg ในพื้นหลัง คุณสามารถป้อนค่าใดๆ ที่นี่เพื่อหยุดกระบวนการโดยอัตโนมัติหลังจากเวลาที่ป้อน หากไม่มีการตอบสนอง (-stimeout)", "timerange": "Time Range", diff --git a/ui/src/router/index.js b/ui/src/router/index.js index 557a7ace..ba134994 100644 --- a/ui/src/router/index.js +++ b/ui/src/router/index.js @@ -265,8 +265,8 @@ export const routes = [ component: () => import(/* webpackChunkName: "utilization" */ '@/views/Utilization/Utilization.vue'), }, { - path: '/timeline', - name: 'Timeline', + path: '/plugins', + name: 'Plugins', meta: { auth: { requiresAuth: true, @@ -280,10 +280,10 @@ export const routes = [ }, navigation: { extras: true, - icon: 'mdi-timeline-outline', + icon: 'mdi-puzzle', }, }, - component: () => import(/* webpackChunkName: "timeline" */ '@/views/Timeline/Timeline.vue'), + component: () => import(/* webpackChunkName: "plugins" */ '@/views/Plugins/Plugins.vue'), }, { path: '/settings', diff --git a/ui/src/views/Plugins/Plugins.vue b/ui/src/views/Plugins/Plugins.vue new file mode 100644 index 00000000..f381b257 --- /dev/null +++ b/ui/src/views/Plugins/Plugins.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/ui/src/views/Recordings/Recordings.vue b/ui/src/views/Recordings/Recordings.vue index f0182302..fab04b98 100644 --- a/ui/src/views/Recordings/Recordings.vue +++ b/ui/src/views/Recordings/Recordings.vue @@ -570,4 +570,8 @@ div > .v-input__slot { border: none !important; } + +div >>> .v-input--selection-controls__input svg { + fill: var(--cui-text-hint) !important; +} diff --git a/ui/src/views/Settings/subpages/account.vue b/ui/src/views/Settings/subpages/account.vue index 2ecdc4f8..65150ca1 100644 --- a/ui/src/views/Settings/subpages/account.vue +++ b/ui/src/views/Settings/subpages/account.vue @@ -1,50 +1,51 @@ - -