diff --git a/server/package-lock.json b/server/package-lock.json index fdf384b36..dfd76cb2e 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/server", - "version": "0.115.19", + "version": "0.115.20", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@scrypted/server", - "version": "0.115.19", + "version": "0.115.20", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/server/src/plugin/plugin-console.ts b/server/src/plugin/plugin-console.ts index f472dc098..9536540f7 100644 --- a/server/src/plugin/plugin-console.ts +++ b/server/src/plugin/plugin-console.ts @@ -1,9 +1,12 @@ +import {Worker} from 'worker_threads'; +import { ChildProcess } from 'child_process'; import { DeviceManager, ScryptedNativeId, SystemManager } from '@scrypted/types'; import { Console } from 'console'; import { once } from 'events'; import net, { Server } from 'net'; import { PassThrough, Readable } from 'stream'; import { listenZero } from '../listen-zero'; +import { ChildProcessWorker } from './runtime/child-process-worker'; // deno's createRequire or node console doesn't hook inspect... // so grab teh deno console from globalThis which was set earlier in deno-plugin-remote.js @@ -329,3 +332,12 @@ export async function createConsoleServer(remoteStdout: Readable, remoteStderr: writePort, }; } + +export function pipeWorkerConsole(nativeWorker: ChildProcess | Worker) { + nativeWorker.stdout.on('data', (data) => { + console.log(data.toString()); + }); + nativeWorker.stderr.on('data', (data) => { + console.error(data.toString()); + }); +} diff --git a/server/src/plugin/plugin-remote-worker.ts b/server/src/plugin/plugin-remote-worker.ts index e681aeff8..b13772067 100644 --- a/server/src/plugin/plugin-remote-worker.ts +++ b/server/src/plugin/plugin-remote-worker.ts @@ -14,7 +14,7 @@ import { evalLocal } from '../rpc-peer-eval'; import { createDuplexRpcPeer } from '../rpc-serializer'; import { MediaManagerImpl } from './media'; import { PluginAPI, PluginAPIProxy, PluginRemote, PluginRemoteLoadZipOptions } from './plugin-api'; -import { prepareConsoles } from './plugin-console'; +import { pipeWorkerConsole, prepareConsoles } from './plugin-console'; import { getPluginNodePath, installOptionalDependencies } from './plugin-npm-dependencies'; import { DeviceManagerImpl, attachPluginRemote, setupPluginRemote } from './plugin-remote'; import { PluginStats, startStatsUpdater } from './plugin-remote-stats'; @@ -375,15 +375,10 @@ export function startPluginRemote(mainFilename: string, pluginId: string, peerSe zipHash, }, undefined); - if (runtimeWorker instanceof ChildProcessWorker) + if (runtimeWorker instanceof ChildProcessWorker) { nativeWorker = runtimeWorker.childProcess; - - nativeWorker.stdout.on('data', (data) => { - console.log(data.toString()); - }); - nativeWorker.stderr.on('data', (data) => { - console.error(data.toString()); - }); + pipeWorkerConsole(nativeWorker); + } } else { const ntw = new NodeThreadWorker(mainFilename, pluginId, {