@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
TypeScript
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 {};