@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
TypeScript
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