schema/types.d.ts

30 lines
625 B
TypeScript

import SchemaItem from "./SchemaItem"
export type SchemaInfer<Type extends SchemaItem> = Type extends SchemaItem<infer X> ? X : never
export interface ValidationError {
message: string
field?: string
value?: unknown
}
export type ValidationResult<T> = {
object: T
valid: true
errors?: undefined
} | {
valid: false
object?: (T extends object ? Partial<T> : T) | undefined
errors: Array<ValidationError>
}
export interface SchemaJSON<T extends SchemaItem = any> {
i: string
a?: Array<string> | undefined
c?: Array<unknown> | undefined
f?: Array<{
n: string
a?: Array<unknown> | undefined
}> | undefined
}