UNPKG

@jsonjoy.com/json-type

Version:

High-performance JSON Pointer implementation

46 lines (45 loc) 3.12 kB
import type { Type } from '../type'; import type * as _ from './schema'; export declare class SchemaBuilder { get str(): _.StrSchema; get num(): _.NumSchema; get bool(): _.BoolSchema; get undef(): _.ConSchema<undefined>; get nil(): _.ConSchema<null>; get arr(): _.ArrSchema<_.AnySchema, [], []>; get obj(): _.ObjSchema<[]>; get map(): _.MapSchema<_.AnySchema, _.StrSchema>; get bin(): _.BinSchema<_.AnySchema>; get any(): _.AnySchema; get fn(): _.FnSchema<_.AnySchema, _.AnySchema, unknown>; get fn$(): _.FnRxSchema<_.AnySchema, _.AnySchema, unknown>; Boolean(options?: _.NoT<_.BoolSchema>): _.BoolSchema; Number(options?: _.NoT<_.NumSchema>): _.NumSchema; String(options?: _.NoT<_.StrSchema>): _.StrSchema; Binary<T extends _.Schema>(type: T, options?: _.Optional<Omit<_.BinSchema, 'type'>>): _.BinSchema<T>; Array<T extends _.Schema>(type: T, options?: Omit<_.NoT<_.ArrSchema<T>>, 'type'>): _.ArrSchema<T, [], []>; /** * Use TypeScript const when defining a constant value. * * @example * * ```ts * s.Const('foo' as const); * ``` */ Const<V>(value: _.Narrow<V>, options?: _.Optional<_.ConSchema<V>>): _.ConSchema<string extends V ? never : number extends V ? never : boolean extends V ? never : any[] extends V ? never : V>; Tuple<const Head extends _.Schema[], T extends _.Schema = _.Schema, const Tail extends [] | _.Schema[] = []>(head: Head, type?: T, tail?: Tail): _.ArrSchema<Type extends T ? _.Schema : T, Head, Tail>; Object<F extends _.KeySchema<string, _.Schema>[] | readonly _.KeySchema<string, _.Schema>[]>(options: _.NoT<_.ObjSchema<F>>): _.ObjSchema<F>; Object<F extends _.KeySchema<string, _.Schema>[] | readonly _.KeySchema<string, _.Schema>[]>(keys: _.ObjSchema<F>['keys'], options?: _.Optional<_.ObjSchema<F>>): _.ObjSchema<F>; Object<F extends _.KeySchema<string, _.Schema>[] | readonly _.KeySchema<string, _.Schema>[]>(...keys: _.ObjSchema<F>['keys']): _.ObjSchema<F>; /** Declares an object property. */ Key<K extends string, V extends _.Schema>(key: K, value: V, options?: Omit<_.NoT<_.KeySchema<K, V>>, 'key' | 'value' | 'optional'>): _.KeySchema<K, V>; /** Declares an optional object property. */ KeyOpt<K extends string, V extends _.Schema>(key: K, value: V, options?: Omit<_.NoT<_.KeySchema<K, V>>, 'key' | 'value' | 'optional'>): _.OptKeySchema<K, V>; Map<V extends _.Schema, K extends _.Schema = _.StrSchema>(value: V, key?: K, options?: Omit<_.NoT<_.MapSchema<V, K>>, 'value' | 'key'>): _.MapSchema<V, K>; Any(options?: _.NoT<_.AnySchema>): _.AnySchema; Ref<T extends _.SchemaBase = any>(ref: string, options?: Omit<_.NoT<_.RefSchema>, 'ref'>): _.RefSchema<T>; Or<T extends _.Schema[]>(...types: T): _.OrSchema<T>; Function<Req extends _.Schema, Res extends _.Schema>(req: Req, res: Res, options?: Omit<_.NoT<_.FnSchema>, 'req' | 'res'>): _.FnSchema<Req, Res>; Function$<Req extends _.Schema, Res extends _.Schema>(req: Req, res: Res, options?: Omit<_.NoT<_.FnRxSchema>, 'req' | 'res'>): _.FnRxSchema<Req, Res>; }