diff --git a/index.d.ts b/index.d.ts index 79e4554..9c7b940 100644 --- a/index.d.ts +++ b/index.d.ts @@ -17,38 +17,38 @@ interface StringSchema { } interface AnyEnumSchema extends EnumSchema {} -interface EnumSchema { - enum: T[] +interface EnumSchema { + enum: Enum[] } interface AnyArraySchema extends ArraySchema {} -interface ArraySchema { +interface ArraySchema { type: 'array' - items: T + items: ItemSchema } interface AnyObjectSchema extends ObjectSchema, string> {} -interface ObjectSchema, R extends keyof T> { +interface ObjectSchema, Required extends keyof Properties> { additionalProperties?: boolean type: 'object' - properties: T - required: R[] + properties: Properties + required: Required[] } -interface ExtractedSchemaArray extends Array> {} +interface ExtractedSchemaArray extends Array> {} -declare type ExtractedSchemaObject = { - [K in keyof T]: (K extends R ? ExtractSchemaType : ExtractSchemaType | undefined) +declare type ExtractedSchemaObject = { + [Key in keyof Properties]: (Key extends Required ? ExtractSchemaType : ExtractSchemaType | undefined) } -declare type ExtractSchemaType = ( - Type extends EnumSchema ? T - : Type extends NullSchema ? null - : Type extends BooleanSchema ? boolean - : Type extends NumberSchema ? number - : Type extends StringSchema ? string - : Type extends ArraySchema ? ExtractedSchemaArray - : Type extends ObjectSchema ? ExtractedSchemaObject +declare type ExtractSchemaType = ( + Schema extends EnumSchema ? Enum + : Schema extends NullSchema ? null + : Schema extends BooleanSchema ? boolean + : Schema extends NumberSchema ? number + : Schema extends StringSchema ? string + : Schema extends ArraySchema ? ExtractedSchemaArray + : Schema extends ObjectSchema ? ExtractedSchemaObject : never ) @@ -72,11 +72,11 @@ declare interface Filter { } declare interface Factory { - , R extends keyof T> (schema: ObjectSchema, options?: any): Validator> - (schema: T, options?: any): Validator + , Required extends keyof Properties> (schema: ObjectSchema, options?: any): Validator> + (schema: Schema, options?: any): Validator - createFilter, R extends keyof T> (schema: ObjectSchema, options?: any): Filter> - createFilter (schema: T, options?: any): Filter> + createFilter, Required extends keyof Properties> (schema: ObjectSchema, options?: any): Filter> + createFilter (schema: Schema, options?: any): Filter> } declare const factory: Factory