From 2563ec44535e3b72ff4e5fe22ba322b5793ecd1f Mon Sep 17 00:00:00 2001 From: Koushik Dutta Date: Fri, 22 Oct 2021 00:54:29 -0700 Subject: [PATCH] server: add exports to plugin scope --- .gitmodules | 2 +- {plugins/homekit => external}/HAP-NodeJS | 0 server/package-lock.json | 4 ++-- server/package.json | 22 +++++++++++----------- server/src/plugin/plugin-device.ts | 3 ++- server/src/plugin/plugin-remote.ts | 1 + 6 files changed, 17 insertions(+), 15 deletions(-) rename {plugins/homekit => external}/HAP-NodeJS (100%) diff --git a/.gitmodules b/.gitmodules index 4c9d4e7f8..da3e3472f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,5 +1,5 @@ [submodule "plugins/homekit/HAP-NodeJS"] - path = plugins/homekit/HAP-NodeJS + path = external/HAP-NodeJS url = git@github.com:koush/HAP-NodeJS [submodule "plugins/unifi-protect/src/unifi-protect"] path = plugins/unifi-protect/src/unifi-protect diff --git a/plugins/homekit/HAP-NodeJS b/external/HAP-NodeJS similarity index 100% rename from plugins/homekit/HAP-NodeJS rename to external/HAP-NodeJS diff --git a/server/package-lock.json b/server/package-lock.json index e3f4cd6f2..f59ee4883 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/server", - "version": "0.0.41", + "version": "0.0.43", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/server", - "version": "0.0.41", + "version": "0.0.43", "license": "ISC", "dependencies": { "@mapbox/node-pre-gyp": "^1.0.5", diff --git a/server/package.json b/server/package.json index 37d011cdb..43b9ef2ae 100644 --- a/server/package.json +++ b/server/package.json @@ -1,6 +1,6 @@ { "name": "@scrypted/server", - "version": "0.0.41", + "version": "0.0.43", "description": "", "dependencies": { "@mapbox/node-pre-gyp": "^1.0.5", @@ -30,14 +30,19 @@ }, "optionalDependencies": { "ffmpeg-for-homebridge": "^0.0.9", - "mdns": "^2.7.2" - }, - "devDependencies": { + "mdns": "^2.7.2", + "canvas": "^2.8.0", + "serialport": "^9.2.0", + "ts-node": "^10.2.1", + "typescript": "^4.4.3", + "zwave-js": "^8.1.1", "@koush/opencv4nodejs": "^5.6.7", "@tensorflow-models/coco-ssd": "^2.2.2", "@tensorflow/tfjs": "^3.9.0", "@tensorflow/tfjs-core": "^3.9.0", - "@tensorflow/tfjs-node-gpu": "^3.9.0", + "@tensorflow/tfjs-node-gpu": "^3.9.0" + }, + "devDependencies": { "@types/adm-zip": "^0.4.33", "@types/cookie-parser": "^1.4.2", "@types/debug": "^4.1.5", @@ -54,12 +59,7 @@ "@types/tar": "^4.0.5", "@types/tmp": "^0.2.0", "@types/whatwg-mimetype": "^2.1.0", - "@types/ws": "^7.4.7", - "canvas": "^2.8.0", - "serialport": "^9.2.0", - "ts-node": "^10.2.1", - "typescript": "^4.4.3", - "zwave-js": "^8.1.1" + "@types/ws": "^7.4.7" }, "scripts": { "preserve": "npm run build", diff --git a/server/src/plugin/plugin-device.ts b/server/src/plugin/plugin-device.ts index 645f4b850..fded5d7c8 100644 --- a/server/src/plugin/plugin-device.ts +++ b/server/src/plugin/plugin-device.ts @@ -81,7 +81,7 @@ export class PluginDeviceProxyHandler implements ProxyHandler, ScryptedDevi const wrappedProxy = new Proxy(wrappedHandler, wrappedHandler); try { - const interfaces = await (mixinProvider.canMixin(type, allInterfaces) as any) as ScryptedInterface[]; + const interfaces = await mixinProvider.canMixin(type, allInterfaces) as any as ScryptedInterface[]; if (!interfaces) { console.warn(`mixin provider ${mixinId} can no longer mixin ${this.id}`); const mixins: string[] = getState(pluginDevice, ScryptedInterfaceProperty.mixins) || []; @@ -173,6 +173,7 @@ export class PluginDeviceProxyHandler implements ProxyHandler, ScryptedDevi const mixinTable = await this.mixinTable; for (const mixin of mixinTable) { + // this could be null? if (mixin.interfaces.includes(iface)) return (await mixin.proxy)[method](...argArray); } diff --git a/server/src/plugin/plugin-remote.ts b/server/src/plugin/plugin-remote.ts index e3a507c85..0740b296d 100644 --- a/server/src/plugin/plugin-remote.ts +++ b/server/src/plugin/plugin-remote.ts @@ -422,6 +422,7 @@ export function attachPluginRemote(peer: RpcPeer, options?: PluginRemoteAttachOp } const params: any = { + exports, window, require: (name: string) => { if (name === 'fs' && !packageJson.scrypted.realfs) {