UNPKG

@message-in-the-middle/core

Version:

Framework-agnostic middleware pattern for message queue processing. Core package with all middlewares.

33 lines (32 loc) 1.29 kB
import { InboundMiddleware, MessageContext } from '../types'; export type SchemaValidator<T = any> = (message: any) => T | Promise<T>; export interface SchemaRegistryOptions { identifierField?: string; strict?: boolean; errorFormatter?: (error: Error, messageType: string) => Error; } export declare class SchemaRegistry { private schemas; private readonly options; constructor(options?: SchemaRegistryOptions); register<T = any>(messageType: string, validator: SchemaValidator<T> | ZodLikeSchema<T>): this; registerMany(schemas: Record<string, SchemaValidator | ZodLikeSchema>): this; get(messageType: string): SchemaValidator | undefined; has(messageType: string): boolean; unregister(messageType: string): boolean; getRegisteredTypes(): string[]; clear(): void; getIdentifierField(): string; validate<T = any>(message: any): Promise<T>; private wrapValidator; private defaultErrorFormatter; } interface ZodLikeSchema<T = any> { parse(data: unknown): T; } export declare class SchemaRegistryMiddleware<T = any> implements InboundMiddleware<T> { private readonly registry; constructor(registry: SchemaRegistry); process(context: MessageContext<T>, next: () => Promise<void>): Promise<void>; } export {};