diff --git a/plugins/ring/package-lock.json b/plugins/ring/package-lock.json index 6e9d3f261..7043c923b 100644 --- a/plugins/ring/package-lock.json +++ b/plugins/ring/package-lock.json @@ -13,6 +13,7 @@ "axios": "^0.24.0" }, "devDependencies": { + "@scrypted/common": "file:../../common", "@scrypted/sdk": "file:../../sdk" }, "optionalDependencies": { @@ -22,11 +23,12 @@ "../../common": { "name": "@scrypted/common", "version": "1.0.1", - "extraneous": true, + "dev": true, "license": "ISC", "dependencies": { "@koush/werift": "file:../external/werift/packages/webrtc", "@scrypted/sdk": "file:../sdk", + "node-fetch-commonjs": "^3.1.1", "typescript": "^4.4.3" }, "devDependencies": { @@ -475,6 +477,10 @@ "tsyringe": "^4.6.0" } }, + "node_modules/@scrypted/common": { + "resolved": "../../common", + "link": true + }, "node_modules/@scrypted/sdk": { "resolved": "../../sdk", "link": true @@ -2684,6 +2690,16 @@ "tsyringe": "^4.6.0" } }, + "@scrypted/common": { + "version": "file:../../common", + "requires": { + "@koush/werift": "file:../external/werift/packages/webrtc", + "@scrypted/sdk": "file:../sdk", + "@types/node": "^16.9.0", + "node-fetch-commonjs": "^3.1.1", + "typescript": "^4.4.3" + } + }, "@scrypted/sdk": { "version": "file:../../sdk", "requires": { diff --git a/plugins/ring/package.json b/plugins/ring/package.json index 5cfd28772..e06a311f0 100644 --- a/plugins/ring/package.json +++ b/plugins/ring/package.json @@ -33,6 +33,7 @@ "got": "11.8.2" }, "devDependencies": { + "@scrypted/common": "file:../../common", "@scrypted/sdk": "file:../../sdk" }, "version": "0.0.59" diff --git a/plugins/ring/src/main.ts b/plugins/ring/src/main.ts index 3c69653cd..11f63603e 100644 --- a/plugins/ring/src/main.ts +++ b/plugins/ring/src/main.ts @@ -8,7 +8,7 @@ import { startRTCSignalingSession } from '../../../common/src/rtc-signaling'; import { generateUuid } from './ring-client-api'; import fs from 'fs'; import { clientApi } from './ring-client-api'; -import { RefreshPromise, singletonPromise, timeoutPromise } from './util'; +import { RefreshPromise, singletonPromise, timeoutPromise } from '@scrypted/common/src/promise-utils'; import { LiveCallNegotiation } from './ring-client-api'; import dgram from 'dgram'; diff --git a/plugins/ring/src/util.ts b/plugins/ring/src/util.ts deleted file mode 100644 index 533bf93c3..000000000 --- a/plugins/ring/src/util.ts +++ /dev/null @@ -1,30 +0,0 @@ -export interface RefreshPromise { - promise: Promise; - cacheDuration: number; -} - -export function singletonPromise(rp: RefreshPromise, method: () => Promise) { - if (rp?.promise) - return rp; - - const promise = method(); - if (!rp) { - rp = { - promise, - cacheDuration: 0, - } - } - else { - rp.promise = promise; - } - promise.finally(() => setTimeout(() => rp.promise = undefined, rp.cacheDuration)); - return rp; -} - -export function timeoutPromise(timeout: number, promise: Promise): Promise { - return new Promise((resolve, reject) => { - setTimeout(() => reject(new Error('timed out')), timeout); - promise.then(resolve); - promise.catch(reject); - }) -}