@naria2/node
Version:
Cross-platform wrapper of aria2
89 lines (86 loc) • 3.04 kB
TypeScript
import { SpawnOptions, ChildProcess } from 'node:child_process';
import { OpenOptions } from 'maria2';
import { PartialDeep } from 'type-fest';
import { PreconfiguredSocket, Aria2RpcWebSocketUrl, Socket, ReadyState } from 'maria2/transport';
import { Aria2RPCOptions, Prettify, Aria2GlobalOptions } from '@naria2/options';
type ChildProcessOptions = {
rpc: Partial<Aria2RPCOptions>;
/**
* 'inherit': inherit the current envrionment variables
*
* 'ignore': remove the related environment variables
*
* @link https://aria2.github.io/manual/en/html/aria2c.html#environment
*/
environment: 'inherit' | 'ignore'
/**
* @link https://aria2.github.io/manual/en/html/aria2c.html#environment
*/
| Partial<{
http_proxy: string;
https_proxy: string;
ftp_proxy: string;
all_proxy: string;
no_proxy: string[];
}>;
/**
* Options passed to spawn aria2c process
*/
spawn: SpawnOptions & {
binary?: string;
};
};
interface ChildProcessOpenOptions extends OpenOptions {
/**
* Max retry times for connecting aria2 JSON RPC server
*
* @default 5
*/
retry?: number;
/**
* Retry delay (unit: ms) for connecting aria2 JSON RPC server
*
* @default 100
*/
retryDelay?: number;
}
type ResolvedChildProcessOptions = Omit<ChildProcessOptions, 'environment' | 'rpc'> & {
rpc: Pick<Aria2RPCOptions, 'listenPort' | 'secret'> & Partial<Aria2RPCOptions>;
ws: ChildProcessOpenOptions;
args: string[];
};
declare class ChildProcessSocket implements PreconfiguredSocket {
readonly url: Aria2RpcWebSocketUrl;
readonly childProcess: ChildProcess;
readonly disposables: Set<() => void>;
readonly options: ResolvedChildProcessOptions;
socket: Socket;
constructor(url: Aria2RpcWebSocketUrl, childProcess: ChildProcess, options: ResolvedChildProcessOptions);
get readyState(): ReadyState;
getOptions(): {
listenPort: number;
secret: string;
args: string[];
};
onClose(fn: () => void): () => void;
close(code?: number, reason?: string): void;
send(data: string): void;
addEventListener(type: 'message', listener: (event: {
data: any;
}) => void, options?: {
once?: boolean;
}): void;
addEventListener(type: 'open', listener: () => void, options?: {
once?: boolean;
}): void;
addEventListener(type: 'error', listener: (error: any) => void, options?: {
once?: boolean;
}): void;
addEventListener(type: 'close', listener: () => void, options?: {
once?: boolean;
}): void;
}
declare function createChildProcess(options?: Prettify<Partial<ChildProcessOptions> & PartialDeep<Aria2GlobalOptions> & {
ws?: ChildProcessOpenOptions;
}>): Promise<ChildProcessSocket>;
export { type ChildProcessOptions as C, type ResolvedChildProcessOptions as R, type ChildProcessOpenOptions as a, ChildProcessSocket as b, createChildProcess as c };