syntropylog
Version:
An instance manager with observability for Node.js applications
1,230 lines • 66.5 kB
TypeScript
/**
* FILE: src/config.schema.ts
* DESCRIPTION: Defines the Zod validation schemas for the entire library's configuration.
* These schemas are the single source of truth for the configuration's structure and types.
*/
import { z } from 'zod';
import { Transport } from './logger/transports/Transport';
import { IHttpClientAdapter } from './http/adapters/adapter.types';
import { IBrokerAdapter } from './brokers/adapter.types';
import { MaskingStrategy } from './masking/MaskingEngine';
/**
* @description Schema for a single Redis instance, using a discriminated union for different connection modes.
*/
export declare const redisInstanceConfigSchema: z.ZodDiscriminatedUnion<"mode", [z.ZodObject<{
mode: z.ZodLiteral<"single">;
instanceName: z.ZodString;
url: z.ZodString;
retryOptions: z.ZodOptional<z.ZodObject<{
maxRetries: z.ZodOptional<z.ZodNumber>;
retryDelay: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
}, {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
}>>;
logging: z.ZodOptional<z.ZodObject<{
/** Level for successful commands. @default 'debug' */
onSuccess: z.ZodDefault<z.ZodEnum<["trace", "debug", "info"]>>;
/** Level for failed commands. @default 'error' */
onError: z.ZodDefault<z.ZodEnum<["warn", "error", "fatal"]>>;
/** Whether to log command parameters. @default true */
logCommandValues: z.ZodDefault<z.ZodBoolean>;
/** Whether to log the return value of commands. @default false */
logReturnValue: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
}, {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
mode: "single";
instanceName: string;
url: string;
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
} | undefined;
}, {
mode: "single";
instanceName: string;
url: string;
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
} | undefined;
}>, z.ZodObject<{
mode: z.ZodLiteral<"sentinel">;
instanceName: z.ZodString;
name: z.ZodString;
sentinels: z.ZodArray<z.ZodObject<{
host: z.ZodString;
port: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
host: string;
port: number;
}, {
host: string;
port: number;
}>, "many">;
sentinelPassword: z.ZodOptional<z.ZodString>;
retryOptions: z.ZodOptional<z.ZodObject<{
maxRetries: z.ZodOptional<z.ZodNumber>;
retryDelay: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
}, {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
}>>;
logging: z.ZodOptional<z.ZodObject<{
onSuccess: z.ZodDefault<z.ZodEnum<["trace", "debug", "info"]>>;
onError: z.ZodDefault<z.ZodEnum<["warn", "error", "fatal"]>>;
logCommandValues: z.ZodDefault<z.ZodBoolean>;
logReturnValue: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
}, {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
name: string;
mode: "sentinel";
instanceName: string;
sentinels: {
host: string;
port: number;
}[];
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
} | undefined;
sentinelPassword?: string | undefined;
}, {
name: string;
mode: "sentinel";
instanceName: string;
sentinels: {
host: string;
port: number;
}[];
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
} | undefined;
sentinelPassword?: string | undefined;
}>, z.ZodObject<{
mode: z.ZodLiteral<"cluster">;
instanceName: z.ZodString;
rootNodes: z.ZodArray<z.ZodObject<{
host: z.ZodString;
port: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
host: string;
port: number;
}, {
host: string;
port: number;
}>, "many">;
logging: z.ZodOptional<z.ZodObject<{
/** Level for successful commands. @default 'debug' */
onSuccess: z.ZodDefault<z.ZodEnum<["trace", "debug", "info"]>>;
/** Level for failed commands. @default 'error' */
onError: z.ZodDefault<z.ZodEnum<["warn", "error", "fatal"]>>;
/** Whether to log command parameters. @default true */
logCommandValues: z.ZodDefault<z.ZodBoolean>;
/** Whether to log the return value of commands. @default false */
logReturnValue: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
}, {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
mode: "cluster";
instanceName: string;
rootNodes: {
host: string;
port: number;
}[];
logging?: {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
} | undefined;
}, {
mode: "cluster";
instanceName: string;
rootNodes: {
host: string;
port: number;
}[];
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
} | undefined;
}>]>;
/**
* @description Schema for the main Redis configuration block, containing all Redis instances.
*/
export declare const redisConfigSchema: z.ZodOptional<z.ZodObject<{
/** An array of Redis instance configurations. */
instances: z.ZodArray<z.ZodDiscriminatedUnion<"mode", [z.ZodObject<{
mode: z.ZodLiteral<"single">;
instanceName: z.ZodString;
url: z.ZodString;
retryOptions: z.ZodOptional<z.ZodObject<{
maxRetries: z.ZodOptional<z.ZodNumber>;
retryDelay: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
}, {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
}>>;
logging: z.ZodOptional<z.ZodObject<{
/** Level for successful commands. @default 'debug' */
onSuccess: z.ZodDefault<z.ZodEnum<["trace", "debug", "info"]>>;
/** Level for failed commands. @default 'error' */
onError: z.ZodDefault<z.ZodEnum<["warn", "error", "fatal"]>>;
/** Whether to log command parameters. @default true */
logCommandValues: z.ZodDefault<z.ZodBoolean>;
/** Whether to log the return value of commands. @default false */
logReturnValue: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
}, {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
mode: "single";
instanceName: string;
url: string;
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
} | undefined;
}, {
mode: "single";
instanceName: string;
url: string;
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
} | undefined;
}>, z.ZodObject<{
mode: z.ZodLiteral<"sentinel">;
instanceName: z.ZodString;
name: z.ZodString;
sentinels: z.ZodArray<z.ZodObject<{
host: z.ZodString;
port: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
host: string;
port: number;
}, {
host: string;
port: number;
}>, "many">;
sentinelPassword: z.ZodOptional<z.ZodString>;
retryOptions: z.ZodOptional<z.ZodObject<{
maxRetries: z.ZodOptional<z.ZodNumber>;
retryDelay: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
}, {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
}>>;
logging: z.ZodOptional<z.ZodObject<{
onSuccess: z.ZodDefault<z.ZodEnum<["trace", "debug", "info"]>>;
onError: z.ZodDefault<z.ZodEnum<["warn", "error", "fatal"]>>;
logCommandValues: z.ZodDefault<z.ZodBoolean>;
logReturnValue: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
}, {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
name: string;
mode: "sentinel";
instanceName: string;
sentinels: {
host: string;
port: number;
}[];
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
} | undefined;
sentinelPassword?: string | undefined;
}, {
name: string;
mode: "sentinel";
instanceName: string;
sentinels: {
host: string;
port: number;
}[];
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
} | undefined;
sentinelPassword?: string | undefined;
}>, z.ZodObject<{
mode: z.ZodLiteral<"cluster">;
instanceName: z.ZodString;
rootNodes: z.ZodArray<z.ZodObject<{
host: z.ZodString;
port: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
host: string;
port: number;
}, {
host: string;
port: number;
}>, "many">;
logging: z.ZodOptional<z.ZodObject<{
/** Level for successful commands. @default 'debug' */
onSuccess: z.ZodDefault<z.ZodEnum<["trace", "debug", "info"]>>;
/** Level for failed commands. @default 'error' */
onError: z.ZodDefault<z.ZodEnum<["warn", "error", "fatal"]>>;
/** Whether to log command parameters. @default true */
logCommandValues: z.ZodDefault<z.ZodBoolean>;
/** Whether to log the return value of commands. @default false */
logReturnValue: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
}, {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
mode: "cluster";
instanceName: string;
rootNodes: {
host: string;
port: number;
}[];
logging?: {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
} | undefined;
}, {
mode: "cluster";
instanceName: string;
rootNodes: {
host: string;
port: number;
}[];
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
} | undefined;
}>]>, "many">;
/** The name of the default Redis instance to use when no name is provided to `getInstance()`. */
default: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
instances: ({
mode: "single";
instanceName: string;
url: string;
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
} | undefined;
} | {
name: string;
mode: "sentinel";
instanceName: string;
sentinels: {
host: string;
port: number;
}[];
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
} | undefined;
sentinelPassword?: string | undefined;
} | {
mode: "cluster";
instanceName: string;
rootNodes: {
host: string;
port: number;
}[];
logging?: {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
} | undefined;
})[];
default?: string | undefined;
}, {
instances: ({
mode: "single";
instanceName: string;
url: string;
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
} | undefined;
} | {
name: string;
mode: "sentinel";
instanceName: string;
sentinels: {
host: string;
port: number;
}[];
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
} | undefined;
sentinelPassword?: string | undefined;
} | {
mode: "cluster";
instanceName: string;
rootNodes: {
host: string;
port: number;
}[];
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
} | undefined;
})[];
default?: string | undefined;
}>>;
/**
* @description Schema for a single HTTP client instance.
*/
export declare const httpInstanceConfigSchema: z.ZodObject<{
instanceName: z.ZodString;
adapter: z.ZodType<IHttpClientAdapter, z.ZodTypeDef, IHttpClientAdapter>;
isDefault: z.ZodOptional<z.ZodBoolean>;
propagate: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
propagateFullContext: z.ZodOptional<z.ZodBoolean>;
logging: z.ZodOptional<z.ZodObject<{
onSuccess: z.ZodOptional<z.ZodDefault<z.ZodEnum<["trace", "debug", "info"]>>>;
onError: z.ZodOptional<z.ZodDefault<z.ZodEnum<["warn", "error", "fatal"]>>>;
logSuccessBody: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
logSuccessHeaders: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
onRequest: z.ZodOptional<z.ZodDefault<z.ZodEnum<["trace", "debug", "info"]>>>;
logRequestBody: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
logRequestHeaders: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
}, "strip", z.ZodTypeAny, {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logSuccessBody?: boolean | undefined;
logSuccessHeaders?: boolean | undefined;
onRequest?: "info" | "debug" | "trace" | undefined;
logRequestBody?: boolean | undefined;
logRequestHeaders?: boolean | undefined;
}, {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logSuccessBody?: boolean | undefined;
logSuccessHeaders?: boolean | undefined;
onRequest?: "info" | "debug" | "trace" | undefined;
logRequestBody?: boolean | undefined;
logRequestHeaders?: boolean | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
instanceName: string;
adapter: IHttpClientAdapter;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logSuccessBody?: boolean | undefined;
logSuccessHeaders?: boolean | undefined;
onRequest?: "info" | "debug" | "trace" | undefined;
logRequestBody?: boolean | undefined;
logRequestHeaders?: boolean | undefined;
} | undefined;
isDefault?: boolean | undefined;
propagate?: string[] | undefined;
propagateFullContext?: boolean | undefined;
}, {
instanceName: string;
adapter: IHttpClientAdapter;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logSuccessBody?: boolean | undefined;
logSuccessHeaders?: boolean | undefined;
onRequest?: "info" | "debug" | "trace" | undefined;
logRequestBody?: boolean | undefined;
logRequestHeaders?: boolean | undefined;
} | undefined;
isDefault?: boolean | undefined;
propagate?: string[] | undefined;
propagateFullContext?: boolean | undefined;
}>;
/**
* @description Schema for the main HTTP configuration block.
*/
export declare const httpConfigSchema: z.ZodOptional<z.ZodObject<{
/** An array of HTTP client instance configurations. */
instances: z.ZodArray<z.ZodObject<{
instanceName: z.ZodString;
adapter: z.ZodType<IHttpClientAdapter, z.ZodTypeDef, IHttpClientAdapter>;
isDefault: z.ZodOptional<z.ZodBoolean>;
propagate: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
propagateFullContext: z.ZodOptional<z.ZodBoolean>;
logging: z.ZodOptional<z.ZodObject<{
onSuccess: z.ZodOptional<z.ZodDefault<z.ZodEnum<["trace", "debug", "info"]>>>;
onError: z.ZodOptional<z.ZodDefault<z.ZodEnum<["warn", "error", "fatal"]>>>;
logSuccessBody: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
logSuccessHeaders: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
onRequest: z.ZodOptional<z.ZodDefault<z.ZodEnum<["trace", "debug", "info"]>>>;
logRequestBody: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
logRequestHeaders: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
}, "strip", z.ZodTypeAny, {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logSuccessBody?: boolean | undefined;
logSuccessHeaders?: boolean | undefined;
onRequest?: "info" | "debug" | "trace" | undefined;
logRequestBody?: boolean | undefined;
logRequestHeaders?: boolean | undefined;
}, {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logSuccessBody?: boolean | undefined;
logSuccessHeaders?: boolean | undefined;
onRequest?: "info" | "debug" | "trace" | undefined;
logRequestBody?: boolean | undefined;
logRequestHeaders?: boolean | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
instanceName: string;
adapter: IHttpClientAdapter;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logSuccessBody?: boolean | undefined;
logSuccessHeaders?: boolean | undefined;
onRequest?: "info" | "debug" | "trace" | undefined;
logRequestBody?: boolean | undefined;
logRequestHeaders?: boolean | undefined;
} | undefined;
isDefault?: boolean | undefined;
propagate?: string[] | undefined;
propagateFullContext?: boolean | undefined;
}, {
instanceName: string;
adapter: IHttpClientAdapter;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logSuccessBody?: boolean | undefined;
logSuccessHeaders?: boolean | undefined;
onRequest?: "info" | "debug" | "trace" | undefined;
logRequestBody?: boolean | undefined;
logRequestHeaders?: boolean | undefined;
} | undefined;
isDefault?: boolean | undefined;
propagate?: string[] | undefined;
propagateFullContext?: boolean | undefined;
}>, "many">;
/** The name of the default HTTP client instance to use when no name is provided to `getInstance()`. */
default: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
instances: {
instanceName: string;
adapter: IHttpClientAdapter;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logSuccessBody?: boolean | undefined;
logSuccessHeaders?: boolean | undefined;
onRequest?: "info" | "debug" | "trace" | undefined;
logRequestBody?: boolean | undefined;
logRequestHeaders?: boolean | undefined;
} | undefined;
isDefault?: boolean | undefined;
propagate?: string[] | undefined;
propagateFullContext?: boolean | undefined;
}[];
default?: string | undefined;
}, {
instances: {
instanceName: string;
adapter: IHttpClientAdapter;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logSuccessBody?: boolean | undefined;
logSuccessHeaders?: boolean | undefined;
onRequest?: "info" | "debug" | "trace" | undefined;
logRequestBody?: boolean | undefined;
logRequestHeaders?: boolean | undefined;
} | undefined;
isDefault?: boolean | undefined;
propagate?: string[] | undefined;
propagateFullContext?: boolean | undefined;
}[];
default?: string | undefined;
}>>;
/**
* @description Schema for a single message broker client instance.
* It validates that a valid `IBrokerAdapter` is provided.
* @private
*/
export declare const brokerInstanceConfigSchema: z.ZodObject<{
instanceName: z.ZodString;
adapter: z.ZodType<IBrokerAdapter, z.ZodTypeDef, IBrokerAdapter>;
/**
* An array of context keys to propagate as message headers/properties.
* To propagate all keys, provide an array with a single wildcard: `['*']`.
* If not provided, only `correlationId` and `transactionId` are propagated by default.
*/
propagate: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
/**
* @deprecated Use `propagate` instead.
* If true, propagates the entire asynchronous context map as headers.
* If false (default), only propagates `correlationId` and `transactionId`.
*/
propagateFullContext: z.ZodOptional<z.ZodBoolean>;
isDefault: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
instanceName: string;
adapter: IBrokerAdapter;
isDefault?: boolean | undefined;
propagate?: string[] | undefined;
propagateFullContext?: boolean | undefined;
}, {
instanceName: string;
adapter: IBrokerAdapter;
isDefault?: boolean | undefined;
propagate?: string[] | undefined;
propagateFullContext?: boolean | undefined;
}>;
/**
* @description Schema for the main message broker configuration block.
*/
export declare const brokerConfigSchema: z.ZodOptional<z.ZodObject<{
/** An array of broker client instance configurations. */
instances: z.ZodArray<z.ZodObject<{
instanceName: z.ZodString;
adapter: z.ZodType<IBrokerAdapter, z.ZodTypeDef, IBrokerAdapter>;
/**
* An array of context keys to propagate as message headers/properties.
* To propagate all keys, provide an array with a single wildcard: `['*']`.
* If not provided, only `correlationId` and `transactionId` are propagated by default.
*/
propagate: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
/**
* @deprecated Use `propagate` instead.
* If true, propagates the entire asynchronous context map as headers.
* If false (default), only propagates `correlationId` and `transactionId`.
*/
propagateFullContext: z.ZodOptional<z.ZodBoolean>;
isDefault: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
instanceName: string;
adapter: IBrokerAdapter;
isDefault?: boolean | undefined;
propagate?: string[] | undefined;
propagateFullContext?: boolean | undefined;
}, {
instanceName: string;
adapter: IBrokerAdapter;
isDefault?: boolean | undefined;
propagate?: string[] | undefined;
propagateFullContext?: boolean | undefined;
}>, "many">;
/** The name of the default broker instance to use when no name is provided to `getInstance()`. */
default: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
instances: {
instanceName: string;
adapter: IBrokerAdapter;
isDefault?: boolean | undefined;
propagate?: string[] | undefined;
propagateFullContext?: boolean | undefined;
}[];
default?: string | undefined;
}, {
instances: {
instanceName: string;
adapter: IBrokerAdapter;
isDefault?: boolean | undefined;
propagate?: string[] | undefined;
propagateFullContext?: boolean | undefined;
}[];
default?: string | undefined;
}>>;
/**
* @description The main schema for the entire SyntropyLog configuration.
* This is the single source of truth for validating the user's configuration object.
*/
export declare const syntropyLogConfigSchema: z.ZodObject<{
/** Logger-specific configuration. */
logger: z.ZodOptional<z.ZodObject<{
name: z.ZodOptional<z.ZodString>;
level: z.ZodOptional<z.ZodEnum<["fatal", "error", "warn", "info", "debug", "trace", "silent"]>>;
serviceName: z.ZodOptional<z.ZodString>;
/**
* An array of transport instances to be used by the logger.
*/
transports: z.ZodOptional<z.ZodArray<z.ZodType<Transport, z.ZodTypeDef, Transport>, "many">>;
/**
* A dictionary of custom serializer functions. The key is the field
* to look for in the log object, and the value is the function that transforms it.
*/
serializers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodFunction<z.ZodTuple<[z.ZodAny], z.ZodUnknown>, z.ZodString>>>;
/**
* The maximum time in milliseconds a custom serializer can run before being timed out.
* @default 50
*/
serializerTimeoutMs: z.ZodDefault<z.ZodNumber>;
/** Configuration for pretty printing logs in development. */
prettyPrint: z.ZodOptional<z.ZodObject<{
enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
}, "strip", z.ZodTypeAny, {
enabled: boolean;
}, {
enabled?: boolean | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
serializerTimeoutMs: number;
name?: string | undefined;
level?: "fatal" | "error" | "warn" | "info" | "debug" | "trace" | "silent" | undefined;
serviceName?: string | undefined;
transports?: Transport[] | undefined;
serializers?: Record<string, (args_0: any, ...args: unknown[]) => string> | undefined;
prettyPrint?: {
enabled: boolean;
} | undefined;
}, {
name?: string | undefined;
level?: "fatal" | "error" | "warn" | "info" | "debug" | "trace" | "silent" | undefined;
serviceName?: string | undefined;
transports?: Transport[] | undefined;
serializers?: Record<string, (args_0: any, ...args: unknown[]) => string> | undefined;
serializerTimeoutMs?: number | undefined;
prettyPrint?: {
enabled?: boolean | undefined;
} | undefined;
}>>;
/** Declarative matrix to control context data in logs. */
loggingMatrix: z.ZodOptional<z.ZodObject<{
/** An array of context keys to include in logs by default. Can be overridden by level-specific rules. */
default: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
/** An array of context keys to include for 'trace' level logs. Use `['*']` to include all context properties. */
trace: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
/** An array of context keys to include for 'debug' level logs. Use `['*']` to include all context properties. */
debug: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
/** An array of context keys to include for 'info' level logs. Use `['*']` to include all context properties. */
info: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
/** An array of context keys to include for 'warn' level logs. Use `['*']` to include all context properties. */
warn: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
/** An array of context keys to include for 'error' level logs. Use `['*']` to include all context properties. */
error: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
/** An array of context keys to include for 'fatal' level logs. Use `['*']` to include all context properties. */
fatal: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, "strip", z.ZodTypeAny, {
fatal?: string[] | undefined;
error?: string[] | undefined;
warn?: string[] | undefined;
info?: string[] | undefined;
debug?: string[] | undefined;
trace?: string[] | undefined;
default?: string[] | undefined;
}, {
fatal?: string[] | undefined;
error?: string[] | undefined;
warn?: string[] | undefined;
info?: string[] | undefined;
debug?: string[] | undefined;
trace?: string[] | undefined;
default?: string[] | undefined;
}>>;
/** Redis client configuration. */
redis: z.ZodOptional<z.ZodObject<{
/** An array of Redis instance configurations. */
instances: z.ZodArray<z.ZodDiscriminatedUnion<"mode", [z.ZodObject<{
mode: z.ZodLiteral<"single">;
instanceName: z.ZodString;
url: z.ZodString;
retryOptions: z.ZodOptional<z.ZodObject<{
maxRetries: z.ZodOptional<z.ZodNumber>;
retryDelay: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
}, {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
}>>;
logging: z.ZodOptional<z.ZodObject<{
/** Level for successful commands. @default 'debug' */
onSuccess: z.ZodDefault<z.ZodEnum<["trace", "debug", "info"]>>;
/** Level for failed commands. @default 'error' */
onError: z.ZodDefault<z.ZodEnum<["warn", "error", "fatal"]>>;
/** Whether to log command parameters. @default true */
logCommandValues: z.ZodDefault<z.ZodBoolean>;
/** Whether to log the return value of commands. @default false */
logReturnValue: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
}, {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
mode: "single";
instanceName: string;
url: string;
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
} | undefined;
}, {
mode: "single";
instanceName: string;
url: string;
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
} | undefined;
}>, z.ZodObject<{
mode: z.ZodLiteral<"sentinel">;
instanceName: z.ZodString;
name: z.ZodString;
sentinels: z.ZodArray<z.ZodObject<{
host: z.ZodString;
port: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
host: string;
port: number;
}, {
host: string;
port: number;
}>, "many">;
sentinelPassword: z.ZodOptional<z.ZodString>;
retryOptions: z.ZodOptional<z.ZodObject<{
maxRetries: z.ZodOptional<z.ZodNumber>;
retryDelay: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
}, {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
}>>;
logging: z.ZodOptional<z.ZodObject<{
onSuccess: z.ZodDefault<z.ZodEnum<["trace", "debug", "info"]>>;
onError: z.ZodDefault<z.ZodEnum<["warn", "error", "fatal"]>>;
logCommandValues: z.ZodDefault<z.ZodBoolean>;
logReturnValue: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
}, {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
name: string;
mode: "sentinel";
instanceName: string;
sentinels: {
host: string;
port: number;
}[];
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
} | undefined;
sentinelPassword?: string | undefined;
}, {
name: string;
mode: "sentinel";
instanceName: string;
sentinels: {
host: string;
port: number;
}[];
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
} | undefined;
sentinelPassword?: string | undefined;
}>, z.ZodObject<{
mode: z.ZodLiteral<"cluster">;
instanceName: z.ZodString;
rootNodes: z.ZodArray<z.ZodObject<{
host: z.ZodString;
port: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
host: string;
port: number;
}, {
host: string;
port: number;
}>, "many">;
logging: z.ZodOptional<z.ZodObject<{
/** Level for successful commands. @default 'debug' */
onSuccess: z.ZodDefault<z.ZodEnum<["trace", "debug", "info"]>>;
/** Level for failed commands. @default 'error' */
onError: z.ZodDefault<z.ZodEnum<["warn", "error", "fatal"]>>;
/** Whether to log command parameters. @default true */
logCommandValues: z.ZodDefault<z.ZodBoolean>;
/** Whether to log the return value of commands. @default false */
logReturnValue: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
}, {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
mode: "cluster";
instanceName: string;
rootNodes: {
host: string;
port: number;
}[];
logging?: {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
} | undefined;
}, {
mode: "cluster";
instanceName: string;
rootNodes: {
host: string;
port: number;
}[];
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
} | undefined;
}>]>, "many">;
/** The name of the default Redis instance to use when no name is provided to `getInstance()`. */
default: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
instances: ({
mode: "single";
instanceName: string;
url: string;
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
} | undefined;
} | {
name: string;
mode: "sentinel";
instanceName: string;
sentinels: {
host: string;
port: number;
}[];
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
} | undefined;
sentinelPassword?: string | undefined;
} | {
mode: "cluster";
instanceName: string;
rootNodes: {
host: string;
port: number;
}[];
logging?: {
onSuccess: "info" | "debug" | "trace";
onError: "fatal" | "error" | "warn";
logCommandValues: boolean;
logReturnValue: boolean;
} | undefined;
})[];
default?: string | undefined;
}, {
instances: ({
mode: "single";
instanceName: string;
url: string;
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
} | undefined;
} | {
name: string;
mode: "sentinel";
instanceName: string;
sentinels: {
host: string;
port: number;
}[];
retryOptions?: {
maxRetries?: number | undefined;
retryDelay?: number | undefined;
} | undefined;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
} | undefined;
sentinelPassword?: string | undefined;
} | {
mode: "cluster";
instanceName: string;
rootNodes: {
host: string;
port: number;
}[];
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logCommandValues?: boolean | undefined;
logReturnValue?: boolean | undefined;
} | undefined;
})[];
default?: string | undefined;
}>>;
/** HTTP client configuration. */
http: z.ZodOptional<z.ZodObject<{
/** An array of HTTP client instance configurations. */
instances: z.ZodArray<z.ZodObject<{
instanceName: z.ZodString;
adapter: z.ZodType<IHttpClientAdapter, z.ZodTypeDef, IHttpClientAdapter>;
isDefault: z.ZodOptional<z.ZodBoolean>;
propagate: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
propagateFullContext: z.ZodOptional<z.ZodBoolean>;
logging: z.ZodOptional<z.ZodObject<{
onSuccess: z.ZodOptional<z.ZodDefault<z.ZodEnum<["trace", "debug", "info"]>>>;
onError: z.ZodOptional<z.ZodDefault<z.ZodEnum<["warn", "error", "fatal"]>>>;
logSuccessBody: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
logSuccessHeaders: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
onRequest: z.ZodOptional<z.ZodDefault<z.ZodEnum<["trace", "debug", "info"]>>>;
logRequestBody: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
logRequestHeaders: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
}, "strip", z.ZodTypeAny, {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logSuccessBody?: boolean | undefined;
logSuccessHeaders?: boolean | undefined;
onRequest?: "info" | "debug" | "trace" | undefined;
logRequestBody?: boolean | undefined;
logRequestHeaders?: boolean | undefined;
}, {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logSuccessBody?: boolean | undefined;
logSuccessHeaders?: boolean | undefined;
onRequest?: "info" | "debug" | "trace" | undefined;
logRequestBody?: boolean | undefined;
logRequestHeaders?: boolean | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
instanceName: string;
adapter: IHttpClientAdapter;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logSuccessBody?: boolean | undefined;
logSuccessHeaders?: boolean | undefined;
onRequest?: "info" | "debug" | "trace" | undefined;
logRequestBody?: boolean | undefined;
logRequestHeaders?: boolean | undefined;
} | undefined;
isDefault?: boolean | undefined;
propagate?: string[] | undefined;
propagateFullContext?: boolean | undefined;
}, {
instanceName: string;
adapter: IHttpClientAdapter;
logging?: {
onSuccess?: "info" | "debug" | "trace" | undefined;
onError?: "fatal" | "error" | "warn" | undefined;
logSuccessBody?: boolean | undefined;
logSuccessHeaders?: boolean | undefined;
onRequest?: "info" | "debug" | "trace"