UNPKG

intern

Version:

Intern. A next-generation code testing stack for JavaScript.

53 lines (52 loc) 1.61 kB
/// <reference types="express" /> /// <reference types="node" /> /// <reference types="ws" /> import * as express from 'express'; import { Server as HttpServer } from 'http'; import * as WebSocket from 'ws'; import { Handle } from '@dojo/core/interfaces'; import Node from './executors/Node'; import { Message } from './channels/Base'; export interface Context { readonly stopped: boolean; readonly basePath: string; readonly executor: Node; handleMessage(message: Message): Promise<any>; } export default class Server implements ServerProperties { readonly executor: Node; basePath: string; port: number; runInSync: boolean; socketPort: number; readonly stopped: boolean; protected _app: express.Express | undefined; protected _httpServer: HttpServer | undefined; protected _sessions: { [id: string]: { listeners: ServerListener[]; }; } | undefined; protected _wsServer: WebSocket.Server | undefined; constructor(options: ServerOptions); start(): Promise<void>; stop(): Promise<any[]>; subscribe(sessionId: string, listener: ServerListener): Handle; private _getSession(sessionId); private _handleMessage(message); private _handleWebSocket(client); private _publish(message); } export interface ServerProperties { basePath: string; executor: Node; port: number; runInSync: boolean; socketPort: number; } export interface ServerListener { (name: string, data?: any): void; } export declare type ServerOptions = Partial<ServerProperties> & { executor: Node; };