diff --git a/common/src/ffmpeg-to-wrtc.ts b/common/src/ffmpeg-to-wrtc.ts index 9516b33fd..45149c9ac 100644 --- a/common/src/ffmpeg-to-wrtc.ts +++ b/common/src/ffmpeg-to-wrtc.ts @@ -30,16 +30,7 @@ export function isPeerConnectionAlive(pc: RTCPeerConnection) { let wrtc: any; function initalizeWebRtc() { - if (wrtc) - return; - try { - wrtc = require('wrtc'); - } - catch (e) { - console.warn('loading wrtc failed. trying @koush/wrtc fallback.'); - wrtc = require('@koush/wrtc'); - } - + wrtc = require('@koush/wrtc'); Object.assign(global, wrtc); } diff --git a/plugins/core/package-lock.json b/plugins/core/package-lock.json index 6003c27a5..3f44cf363 100644 --- a/plugins/core/package-lock.json +++ b/plugins/core/package-lock.json @@ -9,11 +9,10 @@ "version": "0.0.228", "license": "Apache-2.0", "dependencies": { - "@koush/wrtc": "^0.5.2", + "@koush/wrtc": "^0.5.3", "@scrypted/common": "../../common", "@scrypted/sdk": "file:../../sdk", "mime": "^3.0.0", - "query-string": "^7.1.1", "router": "^1.3.6", "typescript": "^4.5.5" }, @@ -78,7 +77,10 @@ "license": "ISC", "dependencies": { "@koush/werift": "file:../external/werift/packages/webrtc", + "@koush/wrtc": "^0.5.3", "@scrypted/sdk": "file:../sdk", + "http-auth-utils": "^3.0.2", + "node-fetch-commonjs": "^3.1.1", "typescript": "^4.4.3" }, "devDependencies": { @@ -87,7 +89,7 @@ }, "../../sdk": { "name": "@scrypted/sdk", - "version": "0.0.173", + "version": "0.0.177", "license": "ISC", "dependencies": { "@babel/preset-typescript": "^7.16.7", @@ -121,9 +123,9 @@ } }, "node_modules/@koush/wrtc": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@koush/wrtc/-/wrtc-0.5.2.tgz", - "integrity": "sha512-3RItD1uLqJPC/OJDX+OSkVYZAu25D16vH7z6bul4g0pSqXRuqrRagBHChWP9TxHRVe1ycAtTm9DzVzeXWMThYg==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@koush/wrtc/-/wrtc-0.5.3.tgz", + "integrity": "sha512-hQqoSZS3/1pUJo3v91oXqFPRQZnqVxiGbEvYE4QsCGUv1hoqGyvr9Kj47RUP9xdYkHMra9HSWFqPj61U8PdSRQ==", "hasInstallScript": true, "dependencies": { "@mapbox/node-pre-gyp": "^1.0.8", @@ -339,14 +341,6 @@ "node": ">=0.10.0" } }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "engines": { - "node": ">=0.10" - } - }, "node_modules/define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -396,14 +390,6 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -995,23 +981,6 @@ "node": ">=0.10.0" } }, - "node_modules/query-string": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.1.tgz", - "integrity": "sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w==", - "dependencies": { - "decode-uri-component": "^0.2.0", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -1189,22 +1158,6 @@ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==" }, - "node_modules/split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", - "engines": { - "node": ">=4" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -1406,9 +1359,9 @@ }, "dependencies": { "@koush/wrtc": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@koush/wrtc/-/wrtc-0.5.2.tgz", - "integrity": "sha512-3RItD1uLqJPC/OJDX+OSkVYZAu25D16vH7z6bul4g0pSqXRuqrRagBHChWP9TxHRVe1ycAtTm9DzVzeXWMThYg==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@koush/wrtc/-/wrtc-0.5.3.tgz", + "integrity": "sha512-hQqoSZS3/1pUJo3v91oXqFPRQZnqVxiGbEvYE4QsCGUv1hoqGyvr9Kj47RUP9xdYkHMra9HSWFqPj61U8PdSRQ==", "requires": { "@mapbox/node-pre-gyp": "^1.0.8", "domexception": "^1.0.1", @@ -1447,8 +1400,11 @@ "version": "file:../../common", "requires": { "@koush/werift": "file:../external/werift/packages/webrtc", + "@koush/wrtc": "^0.5.3", "@scrypted/sdk": "file:../sdk", "@types/node": "^16.9.0", + "http-auth-utils": "^3.0.2", + "node-fetch-commonjs": "^3.1.1", "typescript": "^4.4.3" } }, @@ -1600,11 +1556,6 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -1645,11 +1596,6 @@ "is-arrayish": "^0.2.1" } }, - "filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=" - }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -2090,17 +2036,6 @@ "pinkie": "^2.0.0" } }, - "query-string": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.1.tgz", - "integrity": "sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w==", - "requires": { - "decode-uri-component": "^0.2.0", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - } - }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -2239,16 +2174,6 @@ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==" }, - "split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" - }, - "strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" - }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", diff --git a/plugins/core/package.json b/plugins/core/package.json index 74608f1c5..ac1e84636 100644 --- a/plugins/core/package.json +++ b/plugins/core/package.json @@ -30,7 +30,7 @@ ] }, "dependencies": { - "@koush/wrtc": "^0.5.2", + "@koush/wrtc": "^0.5.3", "@scrypted/common": "../../common", "@scrypted/sdk": "file:../../sdk", "mime": "^3.0.0", diff --git a/plugins/core/src/media-core.ts b/plugins/core/src/media-core.ts index eee10404c..07e0e5982 100644 --- a/plugins/core/src/media-core.ts +++ b/plugins/core/src/media-core.ts @@ -61,6 +61,9 @@ export class MediaCore extends ScryptedDeviceBase implements DeviceProvider, Buf if (path === ScryptedInterface.Camera) { return await systemManager.getDeviceById(id).takePicture() as any; } + if (path === ScryptedInterface.VideoCamera) { + return await systemManager.getDeviceById(id).getVideoStream() as any; + } else { throw new Error('Unrecognized Scrypted Media interface.') } diff --git a/plugins/google-home/package-lock.json b/plugins/google-home/package-lock.json index fbd16c2b1..1ee047d53 100644 --- a/plugins/google-home/package-lock.json +++ b/plugins/google-home/package-lock.json @@ -1,16 +1,16 @@ { "name": "@scrypted/google-home", - "version": "0.0.43", + "version": "0.0.45", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/google-home", - "version": "0.0.43", + "version": "0.0.45", "dependencies": { "@googleapis/homegraph": "^2.0.0", "@homebridge/ciao": "^1.1.3", - "@koush/wrtc": "^0.5.2", + "@koush/wrtc": "^0.5.3", "actions-on-google": "^3.0.0", "axios": "^0.21.1", "google-auth-library": "^7.9.2", @@ -32,7 +32,10 @@ "license": "ISC", "dependencies": { "@koush/werift": "file:../external/werift/packages/webrtc", + "@koush/wrtc": "^0.5.3", "@scrypted/sdk": "file:../sdk", + "http-auth-utils": "^3.0.2", + "node-fetch-commonjs": "^3.1.1", "typescript": "^4.4.3" }, "devDependencies": { @@ -41,7 +44,7 @@ }, "../../sdk": { "name": "@scrypted/sdk", - "version": "0.0.173", + "version": "0.0.177", "dev": true, "license": "ISC", "dependencies": { @@ -104,9 +107,9 @@ } }, "node_modules/@koush/wrtc": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@koush/wrtc/-/wrtc-0.5.2.tgz", - "integrity": "sha512-3RItD1uLqJPC/OJDX+OSkVYZAu25D16vH7z6bul4g0pSqXRuqrRagBHChWP9TxHRVe1ycAtTm9DzVzeXWMThYg==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@koush/wrtc/-/wrtc-0.5.3.tgz", + "integrity": "sha512-hQqoSZS3/1pUJo3v91oXqFPRQZnqVxiGbEvYE4QsCGUv1hoqGyvr9Kj47RUP9xdYkHMra9HSWFqPj61U8PdSRQ==", "hasInstallScript": true, "dependencies": { "@mapbox/node-pre-gyp": "^1.0.8", @@ -1108,9 +1111,9 @@ } }, "node_modules/node-forge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.0.tgz", + "integrity": "sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA==", "engines": { "node": ">= 6.13.0" } @@ -1811,9 +1814,9 @@ } }, "@koush/wrtc": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@koush/wrtc/-/wrtc-0.5.2.tgz", - "integrity": "sha512-3RItD1uLqJPC/OJDX+OSkVYZAu25D16vH7z6bul4g0pSqXRuqrRagBHChWP9TxHRVe1ycAtTm9DzVzeXWMThYg==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@koush/wrtc/-/wrtc-0.5.3.tgz", + "integrity": "sha512-hQqoSZS3/1pUJo3v91oXqFPRQZnqVxiGbEvYE4QsCGUv1hoqGyvr9Kj47RUP9xdYkHMra9HSWFqPj61U8PdSRQ==", "requires": { "@mapbox/node-pre-gyp": "^1.0.8", "domexception": "^1.0.1", @@ -1842,8 +1845,11 @@ "version": "file:../../common", "requires": { "@koush/werift": "file:../external/werift/packages/webrtc", + "@koush/wrtc": "^0.5.3", "@scrypted/sdk": "file:../sdk", "@types/node": "^16.9.0", + "http-auth-utils": "^3.0.2", + "node-fetch-commonjs": "^3.1.1", "typescript": "^4.4.3" } }, @@ -2621,9 +2627,9 @@ } }, "node-forge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.0.tgz", + "integrity": "sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA==" }, "nopt": { "version": "5.0.0", diff --git a/plugins/google-home/package.json b/plugins/google-home/package.json index 4979c578d..048e56864 100644 --- a/plugins/google-home/package.json +++ b/plugins/google-home/package.json @@ -32,7 +32,7 @@ "dependencies": { "@googleapis/homegraph": "^2.0.0", "@homebridge/ciao": "^1.1.3", - "@koush/wrtc": "^0.5.2", + "@koush/wrtc": "^0.5.3", "actions-on-google": "^3.0.0", "axios": "^0.21.1", "google-auth-library": "^7.9.2", @@ -40,11 +40,11 @@ "url-parse": "^1.5.1" }, "devDependencies": { - "@scrypted/sdk": "file:../../sdk", "@scrypted/common": "file:../../common", + "@scrypted/sdk": "file:../../sdk", "@types/debug": "^4.1.5", "@types/lodash": "^4.14.168", "@types/url-parse": "^1.4.3" }, - "version": "0.0.43" + "version": "0.0.45" } diff --git a/plugins/google-home/src/types/thermostat.ts b/plugins/google-home/src/types/thermostat.ts index 3acdd90cb..a55af8db0 100644 --- a/plugins/google-home/src/types/thermostat.ts +++ b/plugins/google-home/src/types/thermostat.ts @@ -21,7 +21,7 @@ addSupportedType({ probe(device) { return device.interfaces.includes(ScryptedInterface.TemperatureSetting) && device.interfaces.includes(ScryptedInterface.Thermometer); }, - async getSyncResponse(device: ScryptedDevice & TemperatureSetting) { + async getSyncResponse(device: ScryptedDevice & TemperatureSetting & Thermometer) { const ret = syncResponse(device, 'action.devices.types.THERMOSTAT'); ret.traits.push('action.devices.traits.TemperatureSetting');