arvo-event-handler
Version:
Type-safe event handler system with versioning, telemetry, and contract validation for distributed Arvo event-driven architectures, featuring routing and multi-handler support.
33 lines (32 loc) • 946 B
TypeScript
import type AbstractArvoEventHandler from './AbstractArvoEventHandler';
/**
* Makes properties optional except specified keys
*
* @template T - Original type
* @template K - Keys to keep required
*
* @example
* ```typescript
* interface User {
* id: number;
* name: string;
* }
*
* type PartialUser = PartialExcept<User, 'id'>;
* // Results in: { id: number; name?: string; }
* ```
*/
export type PartialExcept<T, K extends keyof T> = Partial<Omit<T, K>> & Pick<T, K>;
/**
* OpenTelemetry configuration for event handlers
*/
export type ArvoEventHandlerOpenTelemetryOptions = {
inheritFrom: 'EVENT' | 'CONTEXT';
};
/**
* Type definition for event handler factory functions.
* Creates configured event handlers from given parameters.
*
* @template T - Configuration object type
*/
export type EventHandlerFactory<T = void> = T extends void ? () => AbstractArvoEventHandler : (config: T) => AbstractArvoEventHandler;