///
import * as t from './common/types';
export declare type ILogProps = {
[key: string]: string | number | boolean | undefined;
};
export declare type ServerStart = (options?: {
port?: number | string;
log?: ILogProps;
silent?: boolean;
}) => Promise;
export declare type IMicro = {
server: t.Server;
router: t.IRouter;
handler: t.RouteHandler;
service?: IMicroService;
events$: t.Observable;
request$: t.Observable;
response$: t.Observable;
start: ServerStart;
stop(): Promise;
};
export declare type IMicroService = {
port: number;
isRunning: boolean;
events$: t.Observable;
request$: t.Observable;
response$: t.Observable;
stop(): Promise;
};
export declare type MicroEvent = IMicroStartedEvent | IMicroStoppedEvent | IMicroRequestEvent | IMicroResponseEvent;
export declare type IMicroStartedEvent = {
type: 'SERVICE/started';
payload: IMicroStarted;
};
export declare type IMicroStarted = {
elapsed: t.IDuration;
port: number;
};
export declare type IMicroStoppedEvent = {
type: 'SERVICE/stopped';
payload: IMicroStopped;
};
export declare type IMicroStopped = {
elapsed: t.IDuration;
port: number;
error?: string;
};
export declare type IMicroRequestEvent = {
type: 'SERVICE/request';
payload: IMicroRequest;
};
export declare type IMicroRequest = {
method: t.HttpMethod;
url: string;
req: t.IncomingMessage;
error?: string;
isModified: boolean;
modify(input: IMicroRequestModify | (() => Promise)): void;
};
export declare type IMicroRequestModify = any> = {
context?: C;
};
export declare type IMicroResponseEvent = {
type: 'SERVICE/response';
payload: IMicroResponse;
};
export declare type IMicroResponse = any> = {
elapsed: t.IDuration;
method: t.HttpMethod;
url: string;
req: t.IncomingMessage;
res: t.IRouteResponse;
error?: string;
isModified: boolean;
context: C;
modify(input: t.IRouteResponse | (() => Promise)): void;
};