reshuffle
Version:
Reshuffle is a fast, unopinionated, minimalist integration framework
50 lines (49 loc) • 1.83 kB
TypeScript
/// <reference types="node" />
import { Express } from 'express';
import { PersistentStoreAdapter } from './persistency';
import { BaseConnector, BaseHttpConnector, EventConfiguration } from 'reshuffle-base-connector';
import { Logger, LoggerOptions } from 'winston';
import http from 'http';
export interface Handler {
handle: (event?: any) => void;
id: string;
}
export default class Reshuffle {
availableConnectors: any;
httpDelegates: {
[path: string]: BaseHttpConnector;
};
port: number;
registry: {
connectors: {
[url: string]: BaseConnector;
};
handlers: {
[id: string]: Handler[];
};
common: {
webserver?: http.Server;
persistentStore?: any;
};
};
logger: Logger;
constructor(loggerOptions?: LoggerOptions);
prepareWebServer(): Express;
register(connector: BaseConnector): Reshuffle;
unregister(connector: BaseConnector): Promise<void>;
getConnector(connectorId: BaseConnector['id']): BaseConnector;
registerHTTPDelegate(path: string, delegate: BaseHttpConnector): Reshuffle;
unregisterHTTPDelegate(path: string): void;
when(eventConfiguration: EventConfiguration, handler: () => void | Handler): Reshuffle;
start(port?: number, callback?: () => void): void;
stopWebServer(): void;
restart(port?: number): void;
handleEvent(eventId: string, event: any): Promise<boolean>;
_p_handle(handler: Handler, event: any): Promise<void>;
setPersistentStore(adapter: PersistentStoreAdapter): PersistentStoreAdapter;
getPersistentStore(): any;
clearInterval(intervalID: NodeJS.Timer): void;
setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;
getLogger(): Logger;
}
export { Reshuffle };