@jsonjoy.com/json-type
Version:
High-performance JSON Pointer implementation
46 lines (45 loc) • 3.12 kB
TypeScript
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>;
}