intern
Version:
Intern. A next-generation code testing stack for JavaScript.
53 lines (52 loc) • 1.61 kB
TypeScript
/// <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;
};