UNPKG

nats-micro

Version:

NATS micro compatible extra-lightweight microservice library

74 lines (73 loc) 2.14 kB
import { z } from 'zod'; import { Handler, HandlerInfo } from './broker.js'; import { Middleware } from './middleware.js'; export type MicroserviceMethodConfig<T, R> = { handler: Handler<T, R>; middlewares?: Middleware<T, R>[]; postMiddlewares?: Middleware<T, R>[]; subject?: string; metadata?: Record<string, string>; request?: z.ZodType<T>; response?: z.ZodType<R>; unbalanced?: boolean; local?: boolean; }; export type MicroserviceConfig = { name: string; description: string; version: string; metadata?: Record<string, string>; methods: Record<string, MicroserviceMethodConfig<any, any>>; }; export type MicroserviceHandlerInfo<T, R> = HandlerInfo & { methodConfig: MicroserviceMethodConfig<T, R>; }; export type BaseMicroserviceData = { id: string; name: string; version: string; metadata: { '_nats.client.id': string; '_nats.client.created.library': string; '_nats.client.created.version': string; [x: string]: string; }; }; export type BaseMethodData = { name: string; subject: string; }; export type MicroservicePing = BaseMicroserviceData & { type: 'io.nats.micro.v1.ping_response'; }; export type MethodInfo = BaseMethodData & { metadata: Record<string, string>; }; export type MicroserviceInfo = BaseMicroserviceData & { type: 'io.nats.micro.v1.info_response'; description: string; endpoints: MethodInfo[]; }; export type MethodProfile = { num_requests: number; num_errors: number; last_error: string; processing_time: number; average_processing_time: number; }; export type MethodStats = BaseMethodData & MethodProfile; export type MicroserviceStats = BaseMicroserviceData & { type: 'io.nats.micro.v1.stats_response'; started: string; endpoints: MethodStats[]; }; export type MethodSchema = BaseMethodData & { schema: { request: Record<string, unknown>; response: Record<string, unknown>; }; }; export type MicroserviceSchema = BaseMicroserviceData & { type: 'io.nats.micro.v1.schema_response'; endpoints: MethodSchema[]; };