UNPKG

syntropylog

Version:

An instance manager with observability for Node.js applications

1,230 lines 66.5 kB
/** * 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"