nats-micro
Version:
NATS micro compatible extra-lightweight microservice library
74 lines (73 loc) • 2.14 kB
TypeScript
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[];
};