This commit is contained in:
bietiaop
2025-02-06 15:29:04 +08:00
3 changed files with 9 additions and 10 deletions

View File

@@ -26,9 +26,4 @@ export function require_dlopen(modulename: string) {
process.dlopen(module, path.join(import__dirname, modulename));
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return module.exports as any;
}
/**
* Expose the native API when not Windows, note that this is not public API and
* could be removed at any time.
*/
export const native = (process.platform !== 'win32' ? require_dlopen('./pty/' + process.platform + '.' + process.arch + '/pty.node') : null);
}

View File

@@ -13,12 +13,13 @@ import { IProcessEnv, IPtyForkOptions, IPtyOpenOptions } from '@homebridge/node-
import { ArgvOrCommandLine } from '@homebridge/node-pty-prebuilt-multiarch/src/types';
import { assign } from '@homebridge/node-pty-prebuilt-multiarch/src/utils';
import { pty_loader } from './prebuild-loader';
import { fileURLToPath } from 'url';
export const pty = pty_loader();
let helperPath: string;
helperPath = '../build/Release/spawn-helper';
helperPath = path.resolve(__dirname, helperPath);
const import__dirname = path.dirname(fileURLToPath(import.meta.url));
helperPath = path.resolve(import__dirname, helperPath);
helperPath = helperPath.replace('app.asar', 'app.asar.unpacked');
helperPath = helperPath.replace('node_modules.asar', 'node_modules.asar.unpacked');

View File

@@ -14,6 +14,8 @@ import { ArgvOrCommandLine } from '@homebridge/node-pty-prebuilt-multiarch/src/t
import { fork } from 'child_process';
import { ConoutConnection } from './windowsConoutConnection';
import { require_dlopen } from '.';
import { fileURLToPath } from 'url';
import { dirname } from 'path';
let conptyNative: IConptyNative;
let winptyNative: IWinptyNative;
@@ -149,7 +151,7 @@ export class WindowsPtyAgent {
consoleProcessList.forEach((pid: number) => {
try {
process.kill(pid);
} catch{
} catch {
// Ignore if process cannot be found (kill ESRCH error)
}
});
@@ -176,8 +178,9 @@ export class WindowsPtyAgent {
}
private _getConsoleProcessList(): Promise<number[]> {
const import__dirname = dirname(fileURLToPath(import.meta.url));
return new Promise<number[]>(resolve => {
const agent = fork(path.join(__dirname, 'conpty_console_list_agent'), [this._innerPid.toString()]);
const agent = fork(path.join(import__dirname, 'conpty_console_list_agent'), [this._innerPid.toString()]);
agent.on('message', message => {
clearTimeout(timeout);
// @ts-expect-error no need to check if it is null