1 | import { Struct, Infer, Result, Context, Describe } from './struct';
|
2 | import { Failure } from './error';
|
3 |
|
4 |
|
5 |
|
6 | export declare function isObject(x: unknown): x is object;
|
7 |
|
8 |
|
9 |
|
10 | export declare function isPlainObject(x: unknown): x is {
|
11 | [key: string]: any;
|
12 | };
|
13 |
|
14 |
|
15 |
|
16 | export declare function print(value: any): string;
|
17 |
|
18 |
|
19 |
|
20 |
|
21 | export declare function shiftIterator<T>(input: Iterator<T>): T | undefined;
|
22 |
|
23 |
|
24 |
|
25 | export declare function toFailure<T, S>(result: string | boolean | Partial<Failure>, context: Context, struct: Struct<T, S>, value: any): Failure | undefined;
|
26 |
|
27 |
|
28 |
|
29 | export declare function toFailures<T, S>(result: Result, context: Context, struct: Struct<T, S>, value: any): IterableIterator<Failure>;
|
30 |
|
31 |
|
32 |
|
33 |
|
34 | export declare function run<T, S>(value: unknown, struct: Struct<T, S>, options?: {
|
35 | path?: any[];
|
36 | branch?: any[];
|
37 | coerce?: boolean;
|
38 | mask?: boolean;
|
39 | }): IterableIterator<[Failure, undefined] | [undefined, T]>;
|
40 |
|
41 |
|
42 |
|
43 | export declare type UnionToIntersection<U> = (U extends any ? (arg: U) => any : never) extends (arg: infer I) => void ? I : never;
|
44 |
|
45 |
|
46 |
|
47 | export declare type Assign<T, U> = Simplify<U & Omit<T, keyof U>>;
|
48 |
|
49 |
|
50 |
|
51 | export declare type EnumSchema<T extends string | number | undefined> = {
|
52 | [K in NonNullable<T>]: K;
|
53 | };
|
54 |
|
55 |
|
56 |
|
57 |
|
58 | export declare type IsMatch<T, G> = T extends G ? (G extends T ? T : never) : never;
|
59 |
|
60 |
|
61 |
|
62 | export declare type IsExactMatch<T, U> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? T : never;
|
63 |
|
64 |
|
65 |
|
66 | export declare type IsRecord<T> = T extends object ? string extends keyof T ? T : never : never;
|
67 |
|
68 |
|
69 |
|
70 | export declare type IsTuple<T> = T extends [any] ? T : T extends [any, any] ? T : T extends [any, any, any] ? T : T extends [any, any, any, any] ? T : T extends [any, any, any, any, any] ? T : never;
|
71 |
|
72 |
|
73 |
|
74 | export declare type IsUnion<T, U extends T = T> = (T extends any ? (U extends T ? false : true) : false) extends false ? never : T;
|
75 |
|
76 |
|
77 |
|
78 | export declare type ObjectSchema = Record<string, Struct<any, any>>;
|
79 |
|
80 |
|
81 |
|
82 | export declare type ObjectType<S extends ObjectSchema> = Simplify<Optionalize<{
|
83 | [K in keyof S]: Infer<S[K]>;
|
84 | }>>;
|
85 |
|
86 |
|
87 |
|
88 | export declare type OmitBy<T, V> = Omit<T, {
|
89 | [K in keyof T]: V extends Extract<T[K], V> ? K : never;
|
90 | }[keyof T]>;
|
91 |
|
92 |
|
93 |
|
94 | export declare type Optionalize<S extends object> = OmitBy<S, undefined> & Partial<PickBy<S, undefined>>;
|
95 |
|
96 |
|
97 |
|
98 | export declare type PartialObjectSchema<S extends ObjectSchema> = {
|
99 | [K in keyof S]: Struct<Infer<S[K]> | undefined>;
|
100 | };
|
101 |
|
102 |
|
103 |
|
104 | export declare type PickBy<T, V> = Pick<T, {
|
105 | [K in keyof T]: V extends Extract<T[K], V> ? K : never;
|
106 | }[keyof T]>;
|
107 |
|
108 |
|
109 |
|
110 | export declare type Simplify<T> = T extends any[] | Date ? T : {
|
111 | [K in keyof T]: T[K];
|
112 | } & {};
|
113 | export declare type If<B extends Boolean, Then, Else> = B extends true ? Then : Else;
|
114 |
|
115 |
|
116 |
|
117 | export declare type StructSchema<T> = [T] extends [string | undefined] ? [T] extends [IsMatch<T, string | undefined>] ? null : [T] extends [IsUnion<T>] ? EnumSchema<T> : T : [T] extends [number | undefined] ? [T] extends [IsMatch<T, number | undefined>] ? null : [T] extends [IsUnion<T>] ? EnumSchema<T> : T : [T] extends [boolean] ? [T] extends [IsExactMatch<T, boolean>] ? null : T : T extends bigint | symbol | undefined | null | Function | Date | Error | RegExp | Map<any, any> | WeakMap<any, any> | Set<any> | WeakSet<any> | Promise<any> ? null : T extends Array<infer E> ? T extends IsTuple<T> ? null : Struct<E> : T extends object ? T extends IsRecord<T> ? null : {
|
118 | [K in keyof T]: Describe<T[K]>;
|
119 | } : null;
|
120 |
|
121 |
|
122 |
|
123 | export declare type TupleSchema<T> = {
|
124 | [K in keyof T]: Struct<T[K]>;
|
125 | };
|
126 |
|
127 |
|
128 |
|
129 | export declare type AnyStruct = Struct<any, any>;
|
130 |
|
131 |
|
132 |
|
133 |
|
134 |
|
135 |
|
136 | export declare type InferStructTuple<Tuple extends AnyStruct[], Length extends number = Tuple['length']> = Length extends Length ? number extends Length ? Tuple : _InferTuple<Tuple, Length, []> : never;
|
137 | declare type _InferTuple<Tuple extends AnyStruct[], Length extends number, Accumulated extends unknown[], Index extends number = Accumulated['length']> = Index extends Length ? Accumulated : _InferTuple<Tuple, Length, [...Accumulated, Infer<Tuple[Index]>]>;
|
138 | export {};
|
139 |
|
\ | No newline at end of file |