diff --git a/server/package-lock.json b/server/package-lock.json index ef846b51c..d22a7886c 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -25,20 +25,20 @@ "ip": "^2.0.1", "level": "^8.0.1", "lodash": "^4.17.21", - "nan": "^2.19.0", + "nan": "^2.20.0", "node-dijkstra": "^2.5.0", "node-forge": "^1.3.1", "node-gyp": "^10.1.0", - "py": "npm:@bjia56/portable-python@^0.1.51", + "py": "npm:@bjia56/portable-python@^0.1.52", "router": "^1.3.8", "semver": "^7.6.2", "sharp": "^0.33.4", "source-map-support": "^0.5.21", - "tar": "^7.2.0", + "tar": "^7.4.0", "tslib": "^2.6.3", - "typescript": "^5.4.5", + "typescript": "^5.5.2", "whatwg-mimetype": "^4.0.0", - "ws": "^8.17.0" + "ws": "^8.17.1" }, "bin": { "scrypted-serve": "bin/scrypted-serve" @@ -50,7 +50,7 @@ "@types/follow-redirects": "^1.14.4", "@types/http-auth": "^4.1.4", "@types/ip": "^1.1.3", - "@types/lodash": "^4.17.4", + "@types/lodash": "^4.17.5", "@types/node-dijkstra": "^2.5.6", "@types/node-forge": "^1.3.11", "@types/semver": "^7.5.8", @@ -817,9 +817,9 @@ } }, "node_modules/@types/lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==", + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw==", "dev": true }, "node_modules/@types/mime": { @@ -2415,9 +2415,9 @@ } }, "node_modules/minipass": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.0.tgz", - "integrity": "sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "engines": { "node": ">=16 || 14 >=14.17" } @@ -2582,9 +2582,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nan": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", - "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==" + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==" }, "node_modules/napi-build-utils": { "version": "1.0.2", @@ -2975,9 +2975,9 @@ }, "node_modules/py": { "name": "@bjia56/portable-python", - "version": "0.1.51", - "resolved": "https://registry.npmjs.org/@bjia56/portable-python/-/portable-python-0.1.51.tgz", - "integrity": "sha512-Ug+TBsoD+H0/jknw0lZ0oxGEPwQPCk5B6TEyX24QM2mX9w1FHhD0oNbhW3biRw31KjWK0uyJux01tcaRUpUtRQ==", + "version": "0.1.52", + "resolved": "https://registry.npmjs.org/@bjia56/portable-python/-/portable-python-0.1.52.tgz", + "integrity": "sha512-Uk8EiBXyMHD/oqBAtpC55Z49gcObyLHCdkEG2EfDVlQlaOiet1CMmony4Z1PKko7OSzK2ypnlDa+ysjJSsOFFA==", "dependencies": { "adm-zip": "^0.5.10" } @@ -3492,13 +3492,13 @@ } }, "node_modules/tar": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.2.0.tgz", - "integrity": "sha512-hctwP0Nb4AB60bj8WQgRYaMOuJYRAPMGiQUAotms5igN8ppfQM+IvjQ5HcKu1MaZh2Wy2KWVTe563Yj8dfc14w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.0.tgz", + "integrity": "sha512-XQs0S8fuAkQWuqhDeCdMlJXDX80D7EOVLDPVFkna9yQfzS+PHKgfxcei0jf6/+QAWcjqrnC8uM3fSAnrQl+XYg==", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", - "minipass": "^7.1.0", + "minipass": "^7.1.2", "minizlib": "^3.0.1", "mkdirp": "^3.0.1", "yallist": "^5.0.0" @@ -3660,9 +3660,9 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", + "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -3878,9 +3878,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", - "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "engines": { "node": ">=10.0.0" }, diff --git a/server/package.json b/server/package.json index e3243860a..87366db3c 100644 --- a/server/package.json +++ b/server/package.json @@ -18,20 +18,20 @@ "ip": "^2.0.1", "level": "^8.0.1", "lodash": "^4.17.21", - "nan": "^2.19.0", + "nan": "^2.20.0", "node-dijkstra": "^2.5.0", "node-forge": "^1.3.1", "node-gyp": "^10.1.0", - "py": "npm:@bjia56/portable-python@^0.1.51", + "py": "npm:@bjia56/portable-python@^0.1.52", "router": "^1.3.8", "semver": "^7.6.2", "sharp": "^0.33.4", "source-map-support": "^0.5.21", - "tar": "^7.2.0", + "tar": "^7.4.0", "tslib": "^2.6.3", - "typescript": "^5.4.5", + "typescript": "^5.5.2", "whatwg-mimetype": "^4.0.0", - "ws": "^8.17.0" + "ws": "^8.17.1" }, "devDependencies": { "@types/adm-zip": "^0.5.5", @@ -40,7 +40,7 @@ "@types/follow-redirects": "^1.14.4", "@types/http-auth": "^4.1.4", "@types/ip": "^1.1.3", - "@types/lodash": "^4.17.4", + "@types/lodash": "^4.17.5", "@types/node-dijkstra": "^2.5.6", "@types/node-forge": "^1.3.11", "@types/semver": "^7.5.8", diff --git a/server/src/plugin/plugin-host.ts b/server/src/plugin/plugin-host.ts index 9794a4926..c2441def1 100644 --- a/server/src/plugin/plugin-host.ts +++ b/server/src/plugin/plugin-host.ts @@ -80,8 +80,7 @@ export class PluginHost { } this.ws = {}; - const deviceIds = new Set(Object.values(this.scrypted.pluginDevices).filter(d => d.pluginId === this.pluginId).map(d => d._id)); - this.scrypted.invalidateMixins(deviceIds); + this.scrypted.invalidatePluginMixins(this.pluginId); this.consoleServer.then(server => server.destroy()); } diff --git a/server/src/runtime.ts b/server/src/runtime.ts index 8cc6e62f3..62f93bbac 100644 --- a/server/src/runtime.ts +++ b/server/src/runtime.ts @@ -463,6 +463,7 @@ export class ScryptedRuntime extends PluginHttp { delete this.plugins[pluginId]; existing.kill(); } + this.invalidatePluginMixins(pluginId); } // should this be async? @@ -483,6 +484,11 @@ export class ScryptedRuntime extends PluginHttp { return proxyPair; } + invalidatePluginMixins(pluginId: string) { + const deviceIds = new Set(Object.values(this.pluginDevices).filter(d => d.pluginId === pluginId).map(d => d._id)); + this.invalidateMixins(deviceIds); + } + invalidateMixins(ids: Set) { const ret = new Set(); const remaining = [...ids];