UNPKG

rjweb-server

Version:

Easy and Robust Way to create a Web Server with Many Easy-to-use Features in NodeJS

193 lines (192 loc) 6.42 kB
import { EventHandlerMap } from "../types/event"; import { MiddlewareInitted } from "../types/internal"; export default class SafeServerEventEmitter<Context extends Record<any, any>, Middlewares extends MiddlewareInitted[]> { private instance; /** * Listen to an event * @example * ``` * // We will log every time a request is made * const controller = new Server({ }) * * controller.addListener('httpRequest', (ctr) => { * console.log(`${ctr.url.method} Request made to ${ctr.url.path}`) * }) * ``` * @since 6.0.0 */ addListener<E extends keyof EventHandlerMap<Context, Middlewares>>(event: E, listener: EventHandlerMap<Context, Middlewares>[E]): this; /** * Listen to an event * @example * ``` * // We will log every time a request is made * const controller = new Server({ }) * * controller.on('httpRequest', (ctr) => { * console.log(`${ctr.url.method} Request made to ${ctr.url.path}`) * }) * ``` * @since 6.0.0 */ on<E extends keyof EventHandlerMap<Context, Middlewares>>(event: E, listener: EventHandlerMap<Context, Middlewares>[E]): this; /** * Listen to an event once * @example * ``` * // We will log when a request is made once * const controller = new Server({ }) * * controller.once('httpRequest', (ctr) => { * console.log(`${ctr.url.method} Request made to ${ctr.url.path}`) * }) * ``` * @since 6.0.0 */ once<E extends keyof EventHandlerMap<Context, Middlewares>>(event: E, listener: EventHandlerMap<Context, Middlewares>[E]): this; /** * Listen to an event * @example * ``` * // We will log every time a request is made * const controller = new Server({ }) * * controller.prependListener('httpRequest', (ctr) => { * console.log(`${ctr.url.method} Request made to ${ctr.url.path}`) * }) * ``` * @since 6.0.0 */ prependListener<E extends keyof EventHandlerMap<Context, Middlewares>>(event: E, listener: EventHandlerMap<Context, Middlewares>[E]): this; /** * Listen to an event once * @example * ``` * // We will log when a request is made once * const controller = new Server({ }) * * controller.prependOnceListener('httpRequest', (ctr) => { * console.log(`${ctr.url.method} Request made to ${ctr.url.path}`) * }) * ``` * @since 6.0.0 */ prependOnceListener<E extends keyof EventHandlerMap<Context, Middlewares>>(event: E, listener: EventHandlerMap<Context, Middlewares>[E]): this; /** * Remove a Listener * @example * ``` * // We will remove the first http request listener * const controller = new Server({ }) * * controller.off('httpRequest') * ``` * @since 6.0.0 */ off<E extends keyof EventHandlerMap<Context, Middlewares>>(event: E, listener: EventHandlerMap<Context, Middlewares>[E]): this; /** * Remove all listeners for a given event * @example * ``` * // We will remove all http request listeners * const controller = new Server({ }) * * controller.removeAllListeners('httpRequest') * ``` * @since 6.0.0 */ removeAllListeners<E extends keyof EventHandlerMap<Context, Middlewares>>(event?: E): this; /** * Remove a Listener * @example * ``` * // We will remove the first http request listener * const controller = new Server({ }) * * controller.removeListener('httpRequest') * ``` * @since 6.0.0 */ removeListener<E extends keyof EventHandlerMap<Context, Middlewares>>(event: E, listener: EventHandlerMap<Context, Middlewares>[E]): this; /** * Emit an Event manually * @example * ``` * // We will emit a custom event * const controller = new Server({ }) * * controller.emit('httpRequest', ctr) * ``` * @since 6.0.0 */ emit<E extends keyof EventHandlerMap<Context, Middlewares>>(event: E, ...args: Parameters<EventHandlerMap<Context, Middlewares>[E]>): boolean; /** * Emit an Event manually (with Error handling & Async Await) * @example * ``` * // We will emit a custom event * const controller = new Server({ }) * * await controller.emitSafe('httpRequest', ctr) * ``` * @since 6.0.0 */ emitSafe<E extends keyof EventHandlerMap<Context, Middlewares>>(event: E, ...args: Parameters<EventHandlerMap<Context, Middlewares>[E]>): Promise<boolean>; /** * Get the Registered Event Listeners * @example * ``` * const controller = new Server({ }) * * controller * .on('test') * .on('ok') * * controller.eventNames() // [ 'test', 'ok' ] * ``` * @since 6.0.0 */ eventNames(): (keyof EventHandlerMap<Context, Middlewares> | string | symbol)[]; /** * Get the Raw listeners for an Event * @example * ``` * const controller = new Server({ }) * * controller.rawListeners('httpRequest') * ``` * @since 6.0.0 */ rawListeners<E extends keyof EventHandlerMap<Context, Middlewares>>(event: E): EventHandlerMap<Context, Middlewares>[E][]; /** * Get the listeners for an Event * @example * ``` * const controller = new Server({ }) * * controller.listeners() * ``` * @since 6.0.0 */ listeners<E extends keyof EventHandlerMap<Context, Middlewares>>(event: E): EventHandlerMap<Context, Middlewares>[E][]; /** * Get the amount of registered listeners * @example * ``` * const controller = new Server({ }) * * controller.on('test') * * controller.listenerCount() // 1 * ``` * @since 6.0.0 */ listenerCount<E extends keyof EventHandlerMap<Context, Middlewares>>(event: E): number; /** * Get the maximum amount of listeners * @example * ``` * const controller = new Server({ }) * * controller.getMaxListeners() // 0 * ``` * @since 6.0.0 */ getMaxListeners(): number; /** * Set the maximum amount of listeners * @example * ``` * const controller = new Server({ }) * * controller.getMaxListeners(10) * controller.getMaxListeners() // 10 * ``` * @since 6.0.0 */ setMaxListeners(maxListeners: number): this; }