UNPKG

@allan1361/iota-big3-sdk-middleware

Version:

🏆 A+ Grade Certified Enterprise Middleware Framework - Phase 3 Certified (90/100) with advanced resilience patterns, comprehensive type safety, and production-ready observability

65 lines 2.24 kB
import type { NextFunction, Request, Response } from 'express'; import Joi from 'joi'; export interface ValidationConfig { stripUnknown?: boolean; abortEarly?: boolean; allowUnknown?: boolean; context?: Record<string, unknown>; errorFormatter?: (error: Joi.ValidationError) => import('@iota-big3/sdk-types').ApiError; } export interface ValidationSchemas { body?: Joi.Schema; query?: Joi.Schema; params?: Joi.Schema; headers?: Joi.Schema; } export interface ValidationContext { body?: unknown; params?: Record<string, string>; query?: Record<string, unknown>; headers?: Record<string, string | string[] | undefined>; context?: Record<string, unknown>; } export declare class InputValidator { private config; private logger?; private schemas; private violations; constructor(config?: ValidationConfig, logger?: Logger); registerSchema(): void; validate(): (req: Request, res: Response, next: NextFunction) => Promise<void | Response<any, Record<string, any>>>; private validateDataAsync; private defaultErrorFormatter; static schemas: { id: Joi.StringSchema<string>; email: Joi.StringSchema<string>; password: Joi.StringSchema<string>; username: Joi.StringSchema<string>; phone: Joi.StringSchema<string>; url: Joi.StringSchema<string>; pagination: { page: Joi.NumberSchema<number>; limit: Joi.NumberSchema<number>; sort: Joi.StringSchema<string>; sortBy: Joi.StringSchema<string>; }; createUser: { body: Joi.ObjectSchema<any>; }; updateUser: { body: Joi.ObjectSchema<any>; }; login: { body: Joi.ObjectSchema<any>; }; }; static createValidator(name: string, validator: (value: unknown, helpers: Joi.CustomHelpers) => unknown): any; static sanitizers: { trim: (value: string) => string; lowercase: (value: string) => string; uppercase: (value: string) => string; escape: (value: string) => string; normalizeEmail: (value: string) => string; }; } //# sourceMappingURL=input-validator.d.ts.map