container.ts
Version:
Modular application framework
52 lines (51 loc) • 2.15 kB
TypeScript
/// <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;
}