UNPKG

@synet/patterns

Version:

Robust, battle-tested collection of stable patterns used in Synet packages

38 lines (37 loc) 1.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Mediator = void 0; /** * Core mediator implementation * Dispatches requests to appropriate handlers */ class Mediator { constructor() { // Using a more type-safe approach with a type map this.handlers = new Map(); } /** * Register a handler for a specific request type */ registerHandler(requestType, handler) { if (this.handlers.has(requestType)) { throw new Error(`Handler already registered for request type: ${requestType}`); } // Type assertion here is necessary but safe since we control both sides this.handlers.set(requestType, handler); } /** * Send a request to be handled by its registered handler * @returns Promise resolving to the handler's response */ async send(request) { const handler = this.handlers.get(request.type); if (!handler) { throw new Error(`No handler registered for request type: ${request.type}`); } // Cast is safe because we maintain the type association when registering const typedHandler = handler; return await Promise.resolve(typedHandler.handle(request)); } } exports.Mediator = Mediator;