schema/src/types.d.ts
Florian Bouillon 817b7d6774
0.0.2
Signed-off-by: Avior <git@avior.me>
2025-03-25 13:54:46 +01:00

58 lines
1.1 KiB
TypeScript

import SchemaItem from './SchemaItem'
export type SchemaInfer<Type extends SchemaItem> = Type extends SchemaItem<infer X> ? X : never
export type Infer<Type extends SchemaItem> = SchemaInfer<Type>
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 type ValidationResultOld<T> = {
object: T
valid: true
error?: undefined
} | {
valid: false
object?: (T extends object ? Partial<T> : T) | undefined
error: Array<ValidationError>
}
export interface SchemaJSON {
i: string
a?: Array<string> | undefined
c?: Array<unknown> | undefined
f?: Array<{
n: string
a?: Array<unknown> | undefined
}> | undefined
}
/**
* @deprecated use `SchemaJSON`
*/
export type SchemaItemJSON = SchemaJSON
/**
* @deprecated use `Record<string, SchemaItem>`
*/
export type Model = Record<string, SchemaItem>
/**
* @deprecated
*/
export type ModelInfer<M extends Model> = {
[key in keyof M]: SchemaInfer<M[key]>
}