UNPKG

@jsonjoy.com/json-type

Version:

High-performance JSON Pointer implementation

54 lines (53 loc) 3.74 kB
import type { BooleanSchema, NumberSchema, StringSchema, ArraySchema, ObjectSchema, ObjectFieldSchema, MapSchema, NoT, BinarySchema, AnySchema, RefSchema, OrSchema, Schema, ObjectOptionalFieldSchema, Optional, ConstSchema, TupleSchema, FunctionSchema, FunctionStreamingSchema, TType } from '.'; export declare class SchemaBuilder { get str(): StringSchema; get num(): NumberSchema; get bool(): BooleanSchema; get undef(): ConstSchema<undefined>; get nil(): ConstSchema<null>; get arr(): ArraySchema<AnySchema>; get obj(): ObjectSchema<[]>; get map(): MapSchema<AnySchema>; get bin(): BinarySchema<AnySchema>; get any(): AnySchema; get fn(): FunctionSchema<AnySchema, AnySchema>; get fn$(): FunctionStreamingSchema<AnySchema, AnySchema>; Boolean(id: string, options?: Omit<NoT<BooleanSchema>, 'id'>): BooleanSchema; Boolean(options?: NoT<BooleanSchema>): BooleanSchema; Number(options?: NoT<NumberSchema>): NumberSchema; String(id: string, options?: NoT<StringSchema>): StringSchema; String(options?: NoT<StringSchema>): StringSchema; Binary<T extends Schema>(type: T, options?: Optional<Omit<BinarySchema, 'type'>>): BinarySchema<T>; Array<T extends Schema>(id: string, type: T, options?: Omit<NoT<ArraySchema<T>>, 'id' | 'type'>): ArraySchema<T>; Array<T extends Schema>(type: T, options?: Omit<NoT<ArraySchema<T>>, 'type'>): ArraySchema<T>; /** * Use TypeScript const when defining a constant value. * * * @example * * ```ts * s.Const('foo' as const); * ``` */ Const<V>(value: V, options?: Optional<ConstSchema<V>>): ConstSchema<string extends V ? never : number extends V ? never : boolean extends V ? never : any[] extends V ? never : V>; Tuple<T extends Schema[]>(...types: T): TupleSchema<T>; fields<F extends ObjectFieldSchema<any, any>[]>(...fields: ObjectSchema<F>['fields']): F; Object<F extends ObjectFieldSchema<string, Schema>[] | readonly ObjectFieldSchema<string, Schema>[]>(options: NoT<ObjectSchema<F>>): ObjectSchema<F>; Object<F extends ObjectFieldSchema<string, Schema>[] | readonly ObjectFieldSchema<string, Schema>[]>(fields: ObjectSchema<F>['fields'], options?: Optional<ObjectSchema<F>>): ObjectSchema<F>; Object<F extends ObjectFieldSchema<string, Schema>[] | readonly ObjectFieldSchema<string, Schema>[]>(...fields: ObjectSchema<F>['fields']): ObjectSchema<F>; /** @deprecated Use `.prop`. */ Field<K extends string, V extends Schema>(key: K, type: V, options?: Omit<NoT<ObjectFieldSchema<K, V>>, 'key' | 'type' | 'optional'>): ObjectFieldSchema<K, V>; /** @deprecated Use `.propOpt`. */ FieldOpt<K extends string, V extends Schema>(key: K, type: V, options?: Omit<NoT<ObjectFieldSchema<K, V>>, 'key' | 'type' | 'optional'>): ObjectOptionalFieldSchema<K, V>; /** Declares an object property. */ prop<K extends string, V extends Schema>(key: K, type: V, options?: Omit<NoT<ObjectFieldSchema<K, V>>, 'key' | 'type' | 'optional'>): ObjectFieldSchema<K, V>; /** Declares an optional object property. */ propOpt<K extends string, V extends Schema>(key: K, type: V, options?: Omit<NoT<ObjectFieldSchema<K, V>>, 'key' | 'type' | 'optional'>): ObjectOptionalFieldSchema<K, V>; Map<T extends Schema>(type: T, options?: Omit<NoT<MapSchema<T>>, 'type'>): MapSchema<T>; Any(options?: NoT<AnySchema>): AnySchema; Ref<T extends TType = any>(ref: string): RefSchema<T>; Or<T extends Schema[]>(...types: T): OrSchema<T>; Function<Req extends Schema, Res extends Schema>(req: Req, res: Res): FunctionSchema<Req, Res>; Function$<Req extends Schema, Res extends Schema>(req: Req, res: Res): FunctionStreamingSchema<Req, Res>; }