30 lines
625 B
TypeScript
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
|
|
}
|