UNPKG

container.ts

Version:
52 lines (51 loc) 2.15 kB
/// <reference types="node" /> import * as childProcess from "child_process"; import { Observable } from "rxjs/Observable"; import "rxjs/add/observable/of"; import "rxjs/add/observable/fromEvent"; import "rxjs/add/operator/switchMap"; import "rxjs/add/operator/take"; import "rxjs/add/operator/takeUntil"; import { IContainerModuleOpts, ContainerModule } from "../../container"; import { EProcessMessageType, IProcessCallOptions, IProcessMessage, IProcessSend } from "../process/ChildProcess"; /** Script process options. */ export interface IScriptOptions { args?: string[]; } export declare const ENV_SCRIPTS_PATH = "SCRIPTS_PATH"; export declare const ENV_SCRIPTS_NAME = "SCRIPTS_NAME"; /** Spawned script process interface. */ export declare class ScriptProcess implements IProcessSend { private _scripts; private _target; private _id; private _process; private _options; private _exit; private _message; private _identifier; readonly scripts: Scripts; readonly target: string; readonly id: number; readonly process: childProcess.ChildProcess; readonly options: IScriptOptions; readonly exit: Observable<number | string>; readonly message: Observable<IProcessMessage>; /** Incrementing counter for unique identifiers. */ protected readonly identifier: number; constructor(_scripts: Scripts, _target: string, _id: number, _process: childProcess.ChildProcess, _options?: IScriptOptions); /** Send message to child process. */ send(type: EProcessMessageType, data: any): void; /** Make call to module.method in child process. */ call<T>(target: string, method: string, options?: IProcessCallOptions): Observable<T>; /** Handle messages received from child process. */ protected handleMessage(message: IProcessMessage): void; } /** Node.js scripts interface. */ export declare class Scripts extends ContainerModule { private _path; readonly path: string; constructor(name: string, opts: IContainerModuleOpts); /** Spawn new Node.js process using script file. */ fork(target: string, options?: IScriptOptions): ScriptProcess; }