UNPKG

@naria2/node

Version:

Cross-platform wrapper of aria2

89 lines (86 loc) 3.04 kB
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 };