UNPKG

@marblejs-contrib/middleware-joi

Version:

A joi validation middleware for Marble.js

22 lines 1.23 kB
import * as Joi from 'joi'; import { Schema } from './validator.schema'; export declare type ExtractedBody<T extends Schema> = ExtractObject<T['body']>; export declare type ExtractedParams<T extends Schema> = ExtractObject<T['params']>; export declare type ExtractedQuery<T extends Schema> = ExtractObject<T['query']>; export declare type ExtractObject<T> = T extends Joi.ObjectSchema ? ExtractType<T> : { [K in keyof T]: ExtractType<T[K]>; }; export declare type ExtractType<T> = T extends Joi.NumberSchema ? number : T extends Joi.BooleanSchema ? boolean : T extends Joi.StringSchema ? string : T extends Joi.DateSchema ? Date : T extends Joi.ObjectSchema<infer U> ? U extends null ? Record<string, any> : { [K in keyof U]: ExtractType<U[K]>; } : T extends Joi.ArraySchema<infer U> ? U extends null ? any[] : U[] : unknown; declare module 'joi' { function object<T>(schema: T): ObjectSchema<T>; interface ObjectSchema<T = null> { keys<T>(schema: T): ObjectSchema<ExtractType<T>>; } function array<T>(schema: T): ArraySchema<ExtractType<T>>; interface ArraySchema<T = null> { items<T>(schema: T): ArraySchema<ExtractType<T>>; } } //# sourceMappingURL=validator.interface.d.ts.map