@tanstack/form-core 1.6.1 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/util-types.d.cts +14 -12
- package/dist/esm/util-types.d.ts +14 -12
- package/package.json +1 -1
- package/src/util-types.ts +27 -20
|
@@ -16,41 +16,43 @@ export interface AnyDeepKeyAndValue {
|
|
|
16
16
|
value: any;
|
|
17
17
|
}
|
|
18
18
|
export type ArrayAccessor<TParent extends AnyDeepKeyAndValue> = `${TParent['key'] extends never ? '' : TParent['key']}[${number}]`;
|
|
19
|
-
export interface ArrayDeepKeyAndValue<in out TParent extends AnyDeepKeyAndValue, in out T extends ReadonlyArray<any>> {
|
|
19
|
+
export interface ArrayDeepKeyAndValue<in out TParent extends AnyDeepKeyAndValue, in out T extends ReadonlyArray<any>> extends AnyDeepKeyAndValue {
|
|
20
20
|
key: ArrayAccessor<TParent>;
|
|
21
21
|
value: T[number] | Nullable<TParent['value']>;
|
|
22
22
|
}
|
|
23
|
-
export type DeepKeyAndValueArray<TParent extends AnyDeepKeyAndValue, T extends ReadonlyArray<any>, TAcc> =
|
|
23
|
+
export type DeepKeyAndValueArray<TParent extends AnyDeepKeyAndValue, T extends ReadonlyArray<any>, TAcc> = DeepKeysAndValuesImpl<NonNullable<T[number]>, ArrayDeepKeyAndValue<TParent, T>, TAcc | ArrayDeepKeyAndValue<TParent, T>>;
|
|
24
24
|
export type TupleAccessor<TParent extends AnyDeepKeyAndValue, TKey extends string> = `${TParent['key'] extends never ? '' : TParent['key']}[${TKey}]`;
|
|
25
|
-
export interface TupleDeepKeyAndValue<in out TParent extends AnyDeepKeyAndValue, in out T, in out TKey extends AllTupleKeys<T>> {
|
|
25
|
+
export interface TupleDeepKeyAndValue<in out TParent extends AnyDeepKeyAndValue, in out T, in out TKey extends AllTupleKeys<T>> extends AnyDeepKeyAndValue {
|
|
26
26
|
key: TupleAccessor<TParent, TKey>;
|
|
27
27
|
value: T[TKey] | Nullable<TParent['value']>;
|
|
28
28
|
}
|
|
29
29
|
export type AllTupleKeys<T> = T extends any ? keyof T & `${number}` : never;
|
|
30
|
-
export type DeepKeyAndValueTuple<TParent extends AnyDeepKeyAndValue, T extends ReadonlyArray<any>, TAcc, TAllKeys extends AllTupleKeys<T> = AllTupleKeys<T>> = TAllKeys extends any ?
|
|
30
|
+
export type DeepKeyAndValueTuple<TParent extends AnyDeepKeyAndValue, T extends ReadonlyArray<any>, TAcc, TAllKeys extends AllTupleKeys<T> = AllTupleKeys<T>> = TAllKeys extends any ? DeepKeysAndValuesImpl<NonNullable<T[TAllKeys]>, TupleDeepKeyAndValue<TParent, T, TAllKeys>, TAcc | TupleDeepKeyAndValue<TParent, T, TAllKeys>> : never;
|
|
31
31
|
export type AllObjectKeys<T> = T extends any ? keyof T & (string | number) : never;
|
|
32
32
|
export type ObjectAccessor<TParent extends AnyDeepKeyAndValue, TKey extends string | number> = TParent['key'] extends never ? `${TKey}` : `${TParent['key']}.${TKey}`;
|
|
33
33
|
export type Nullable<T> = T & (undefined | null);
|
|
34
|
-
export
|
|
34
|
+
export type ObjectValue<TParent extends AnyDeepKeyAndValue, T, TKey extends AllObjectKeys<T>> = T[TKey] | Nullable<TParent['value']>;
|
|
35
|
+
export interface ObjectDeepKeyAndValue<in out TParent extends AnyDeepKeyAndValue, in out T, in out TKey extends AllObjectKeys<T>> extends AnyDeepKeyAndValue {
|
|
35
36
|
key: ObjectAccessor<TParent, TKey>;
|
|
36
|
-
value: T
|
|
37
|
+
value: ObjectValue<TParent, T, TKey>;
|
|
37
38
|
}
|
|
38
|
-
export type DeepKeyAndValueObject<TParent extends AnyDeepKeyAndValue, T, TAcc, TAllKeys extends AllObjectKeys<T> = AllObjectKeys<T>> = TAllKeys extends any ?
|
|
39
|
+
export type DeepKeyAndValueObject<TParent extends AnyDeepKeyAndValue, T, TAcc, TAllKeys extends AllObjectKeys<T> = AllObjectKeys<T>> = TAllKeys extends any ? DeepKeysAndValuesImpl<NonNullable<T[TAllKeys]>, ObjectDeepKeyAndValue<TParent, T, TAllKeys>, TAcc | ObjectDeepKeyAndValue<TParent, T, TAllKeys>> : never;
|
|
39
40
|
export type UnknownAccessor<TParent extends AnyDeepKeyAndValue> = TParent['key'] extends never ? string : `${TParent['key']}.${string}`;
|
|
40
|
-
export interface UnknownDeepKeyAndValue<TParent extends AnyDeepKeyAndValue> {
|
|
41
|
+
export interface UnknownDeepKeyAndValue<TParent extends AnyDeepKeyAndValue> extends AnyDeepKeyAndValue {
|
|
41
42
|
key: UnknownAccessor<TParent>;
|
|
42
43
|
value: unknown;
|
|
43
44
|
}
|
|
44
|
-
export type DeepKeysAndValues<T
|
|
45
|
+
export type DeepKeysAndValues<T> = DeepKeysAndValuesImpl<T> extends AnyDeepKeyAndValue ? DeepKeysAndValuesImpl<T> : never;
|
|
46
|
+
export type DeepKeysAndValuesImpl<T, TParent extends AnyDeepKeyAndValue = never, TAcc = never> = unknown extends T ? TAcc | UnknownDeepKeyAndValue<TParent> : unknown extends T ? T : T extends string | number | boolean | bigint | Date ? TAcc : T extends ReadonlyArray<any> ? number extends T['length'] ? DeepKeyAndValueArray<TParent, T, TAcc> : DeepKeyAndValueTuple<TParent, T, TAcc> : keyof T extends never ? TAcc | UnknownDeepKeyAndValue<TParent> : T extends object ? DeepKeyAndValueObject<TParent, T, TAcc> : TAcc;
|
|
45
47
|
export type DeepRecord<T> = {
|
|
46
|
-
[TRecord in DeepKeysAndValues<T>
|
|
48
|
+
[TRecord in DeepKeysAndValues<T> as TRecord['key']]: TRecord['value'];
|
|
47
49
|
};
|
|
48
50
|
/**
|
|
49
51
|
* The keys of an object or array, deeply nested.
|
|
50
52
|
*/
|
|
51
|
-
export type DeepKeys<T> = unknown extends T ? string : DeepKeysAndValues<T>
|
|
53
|
+
export type DeepKeys<T> = unknown extends T ? string : DeepKeysAndValues<T>['key'];
|
|
52
54
|
/**
|
|
53
55
|
* Infer the type of a deeply nested property within an object or an array.
|
|
54
56
|
*/
|
|
55
|
-
export type DeepValue<TValue, TAccessor> =
|
|
57
|
+
export type DeepValue<TValue, TAccessor> = unknown extends TValue ? TValue : TAccessor extends DeepKeys<TValue> ? DeepRecord<TValue>[TAccessor] : never;
|
|
56
58
|
export {};
|
package/dist/esm/util-types.d.ts
CHANGED
|
@@ -16,41 +16,43 @@ export interface AnyDeepKeyAndValue {
|
|
|
16
16
|
value: any;
|
|
17
17
|
}
|
|
18
18
|
export type ArrayAccessor<TParent extends AnyDeepKeyAndValue> = `${TParent['key'] extends never ? '' : TParent['key']}[${number}]`;
|
|
19
|
-
export interface ArrayDeepKeyAndValue<in out TParent extends AnyDeepKeyAndValue, in out T extends ReadonlyArray<any>> {
|
|
19
|
+
export interface ArrayDeepKeyAndValue<in out TParent extends AnyDeepKeyAndValue, in out T extends ReadonlyArray<any>> extends AnyDeepKeyAndValue {
|
|
20
20
|
key: ArrayAccessor<TParent>;
|
|
21
21
|
value: T[number] | Nullable<TParent['value']>;
|
|
22
22
|
}
|
|
23
|
-
export type DeepKeyAndValueArray<TParent extends AnyDeepKeyAndValue, T extends ReadonlyArray<any>, TAcc> =
|
|
23
|
+
export type DeepKeyAndValueArray<TParent extends AnyDeepKeyAndValue, T extends ReadonlyArray<any>, TAcc> = DeepKeysAndValuesImpl<NonNullable<T[number]>, ArrayDeepKeyAndValue<TParent, T>, TAcc | ArrayDeepKeyAndValue<TParent, T>>;
|
|
24
24
|
export type TupleAccessor<TParent extends AnyDeepKeyAndValue, TKey extends string> = `${TParent['key'] extends never ? '' : TParent['key']}[${TKey}]`;
|
|
25
|
-
export interface TupleDeepKeyAndValue<in out TParent extends AnyDeepKeyAndValue, in out T, in out TKey extends AllTupleKeys<T>> {
|
|
25
|
+
export interface TupleDeepKeyAndValue<in out TParent extends AnyDeepKeyAndValue, in out T, in out TKey extends AllTupleKeys<T>> extends AnyDeepKeyAndValue {
|
|
26
26
|
key: TupleAccessor<TParent, TKey>;
|
|
27
27
|
value: T[TKey] | Nullable<TParent['value']>;
|
|
28
28
|
}
|
|
29
29
|
export type AllTupleKeys<T> = T extends any ? keyof T & `${number}` : never;
|
|
30
|
-
export type DeepKeyAndValueTuple<TParent extends AnyDeepKeyAndValue, T extends ReadonlyArray<any>, TAcc, TAllKeys extends AllTupleKeys<T> = AllTupleKeys<T>> = TAllKeys extends any ?
|
|
30
|
+
export type DeepKeyAndValueTuple<TParent extends AnyDeepKeyAndValue, T extends ReadonlyArray<any>, TAcc, TAllKeys extends AllTupleKeys<T> = AllTupleKeys<T>> = TAllKeys extends any ? DeepKeysAndValuesImpl<NonNullable<T[TAllKeys]>, TupleDeepKeyAndValue<TParent, T, TAllKeys>, TAcc | TupleDeepKeyAndValue<TParent, T, TAllKeys>> : never;
|
|
31
31
|
export type AllObjectKeys<T> = T extends any ? keyof T & (string | number) : never;
|
|
32
32
|
export type ObjectAccessor<TParent extends AnyDeepKeyAndValue, TKey extends string | number> = TParent['key'] extends never ? `${TKey}` : `${TParent['key']}.${TKey}`;
|
|
33
33
|
export type Nullable<T> = T & (undefined | null);
|
|
34
|
-
export
|
|
34
|
+
export type ObjectValue<TParent extends AnyDeepKeyAndValue, T, TKey extends AllObjectKeys<T>> = T[TKey] | Nullable<TParent['value']>;
|
|
35
|
+
export interface ObjectDeepKeyAndValue<in out TParent extends AnyDeepKeyAndValue, in out T, in out TKey extends AllObjectKeys<T>> extends AnyDeepKeyAndValue {
|
|
35
36
|
key: ObjectAccessor<TParent, TKey>;
|
|
36
|
-
value: T
|
|
37
|
+
value: ObjectValue<TParent, T, TKey>;
|
|
37
38
|
}
|
|
38
|
-
export type DeepKeyAndValueObject<TParent extends AnyDeepKeyAndValue, T, TAcc, TAllKeys extends AllObjectKeys<T> = AllObjectKeys<T>> = TAllKeys extends any ?
|
|
39
|
+
export type DeepKeyAndValueObject<TParent extends AnyDeepKeyAndValue, T, TAcc, TAllKeys extends AllObjectKeys<T> = AllObjectKeys<T>> = TAllKeys extends any ? DeepKeysAndValuesImpl<NonNullable<T[TAllKeys]>, ObjectDeepKeyAndValue<TParent, T, TAllKeys>, TAcc | ObjectDeepKeyAndValue<TParent, T, TAllKeys>> : never;
|
|
39
40
|
export type UnknownAccessor<TParent extends AnyDeepKeyAndValue> = TParent['key'] extends never ? string : `${TParent['key']}.${string}`;
|
|
40
|
-
export interface UnknownDeepKeyAndValue<TParent extends AnyDeepKeyAndValue> {
|
|
41
|
+
export interface UnknownDeepKeyAndValue<TParent extends AnyDeepKeyAndValue> extends AnyDeepKeyAndValue {
|
|
41
42
|
key: UnknownAccessor<TParent>;
|
|
42
43
|
value: unknown;
|
|
43
44
|
}
|
|
44
|
-
export type DeepKeysAndValues<T
|
|
45
|
+
export type DeepKeysAndValues<T> = DeepKeysAndValuesImpl<T> extends AnyDeepKeyAndValue ? DeepKeysAndValuesImpl<T> : never;
|
|
46
|
+
export type DeepKeysAndValuesImpl<T, TParent extends AnyDeepKeyAndValue = never, TAcc = never> = unknown extends T ? TAcc | UnknownDeepKeyAndValue<TParent> : unknown extends T ? T : T extends string | number | boolean | bigint | Date ? TAcc : T extends ReadonlyArray<any> ? number extends T['length'] ? DeepKeyAndValueArray<TParent, T, TAcc> : DeepKeyAndValueTuple<TParent, T, TAcc> : keyof T extends never ? TAcc | UnknownDeepKeyAndValue<TParent> : T extends object ? DeepKeyAndValueObject<TParent, T, TAcc> : TAcc;
|
|
45
47
|
export type DeepRecord<T> = {
|
|
46
|
-
[TRecord in DeepKeysAndValues<T>
|
|
48
|
+
[TRecord in DeepKeysAndValues<T> as TRecord['key']]: TRecord['value'];
|
|
47
49
|
};
|
|
48
50
|
/**
|
|
49
51
|
* The keys of an object or array, deeply nested.
|
|
50
52
|
*/
|
|
51
|
-
export type DeepKeys<T> = unknown extends T ? string : DeepKeysAndValues<T>
|
|
53
|
+
export type DeepKeys<T> = unknown extends T ? string : DeepKeysAndValues<T>['key'];
|
|
52
54
|
/**
|
|
53
55
|
* Infer the type of a deeply nested property within an object or an array.
|
|
54
56
|
*/
|
|
55
|
-
export type DeepValue<TValue, TAccessor> =
|
|
57
|
+
export type DeepValue<TValue, TAccessor> = unknown extends TValue ? TValue : TAccessor extends DeepKeys<TValue> ? DeepRecord<TValue>[TAccessor] : never;
|
|
56
58
|
export {};
|
package/package.json
CHANGED
package/src/util-types.ts
CHANGED
|
@@ -30,7 +30,7 @@ export type ArrayAccessor<TParent extends AnyDeepKeyAndValue> =
|
|
|
30
30
|
export interface ArrayDeepKeyAndValue<
|
|
31
31
|
in out TParent extends AnyDeepKeyAndValue,
|
|
32
32
|
in out T extends ReadonlyArray<any>,
|
|
33
|
-
> {
|
|
33
|
+
> extends AnyDeepKeyAndValue {
|
|
34
34
|
key: ArrayAccessor<TParent>
|
|
35
35
|
value: T[number] | Nullable<TParent['value']>
|
|
36
36
|
}
|
|
@@ -39,7 +39,7 @@ export type DeepKeyAndValueArray<
|
|
|
39
39
|
TParent extends AnyDeepKeyAndValue,
|
|
40
40
|
T extends ReadonlyArray<any>,
|
|
41
41
|
TAcc,
|
|
42
|
-
> =
|
|
42
|
+
> = DeepKeysAndValuesImpl<
|
|
43
43
|
NonNullable<T[number]>,
|
|
44
44
|
ArrayDeepKeyAndValue<TParent, T>,
|
|
45
45
|
TAcc | ArrayDeepKeyAndValue<TParent, T>
|
|
@@ -54,7 +54,7 @@ export interface TupleDeepKeyAndValue<
|
|
|
54
54
|
in out TParent extends AnyDeepKeyAndValue,
|
|
55
55
|
in out T,
|
|
56
56
|
in out TKey extends AllTupleKeys<T>,
|
|
57
|
-
> {
|
|
57
|
+
> extends AnyDeepKeyAndValue {
|
|
58
58
|
key: TupleAccessor<TParent, TKey>
|
|
59
59
|
value: T[TKey] | Nullable<TParent['value']>
|
|
60
60
|
}
|
|
@@ -67,7 +67,7 @@ export type DeepKeyAndValueTuple<
|
|
|
67
67
|
TAcc,
|
|
68
68
|
TAllKeys extends AllTupleKeys<T> = AllTupleKeys<T>,
|
|
69
69
|
> = TAllKeys extends any
|
|
70
|
-
?
|
|
70
|
+
? DeepKeysAndValuesImpl<
|
|
71
71
|
NonNullable<T[TAllKeys]>,
|
|
72
72
|
TupleDeepKeyAndValue<TParent, T, TAllKeys>,
|
|
73
73
|
TAcc | TupleDeepKeyAndValue<TParent, T, TAllKeys>
|
|
@@ -85,13 +85,19 @@ export type ObjectAccessor<
|
|
|
85
85
|
|
|
86
86
|
export type Nullable<T> = T & (undefined | null)
|
|
87
87
|
|
|
88
|
+
export type ObjectValue<
|
|
89
|
+
TParent extends AnyDeepKeyAndValue,
|
|
90
|
+
T,
|
|
91
|
+
TKey extends AllObjectKeys<T>,
|
|
92
|
+
> = T[TKey] | Nullable<TParent['value']>
|
|
93
|
+
|
|
88
94
|
export interface ObjectDeepKeyAndValue<
|
|
89
95
|
in out TParent extends AnyDeepKeyAndValue,
|
|
90
96
|
in out T,
|
|
91
97
|
in out TKey extends AllObjectKeys<T>,
|
|
92
|
-
> {
|
|
98
|
+
> extends AnyDeepKeyAndValue {
|
|
93
99
|
key: ObjectAccessor<TParent, TKey>
|
|
94
|
-
value: T
|
|
100
|
+
value: ObjectValue<TParent, T, TKey>
|
|
95
101
|
}
|
|
96
102
|
|
|
97
103
|
export type DeepKeyAndValueObject<
|
|
@@ -100,7 +106,7 @@ export type DeepKeyAndValueObject<
|
|
|
100
106
|
TAcc,
|
|
101
107
|
TAllKeys extends AllObjectKeys<T> = AllObjectKeys<T>,
|
|
102
108
|
> = TAllKeys extends any
|
|
103
|
-
?
|
|
109
|
+
? DeepKeysAndValuesImpl<
|
|
104
110
|
NonNullable<T[TAllKeys]>,
|
|
105
111
|
ObjectDeepKeyAndValue<TParent, T, TAllKeys>,
|
|
106
112
|
TAcc | ObjectDeepKeyAndValue<TParent, T, TAllKeys>
|
|
@@ -110,12 +116,18 @@ export type DeepKeyAndValueObject<
|
|
|
110
116
|
export type UnknownAccessor<TParent extends AnyDeepKeyAndValue> =
|
|
111
117
|
TParent['key'] extends never ? string : `${TParent['key']}.${string}`
|
|
112
118
|
|
|
113
|
-
export interface UnknownDeepKeyAndValue<TParent extends AnyDeepKeyAndValue>
|
|
119
|
+
export interface UnknownDeepKeyAndValue<TParent extends AnyDeepKeyAndValue>
|
|
120
|
+
extends AnyDeepKeyAndValue {
|
|
114
121
|
key: UnknownAccessor<TParent>
|
|
115
122
|
value: unknown
|
|
116
123
|
}
|
|
117
124
|
|
|
118
|
-
export type DeepKeysAndValues<
|
|
125
|
+
export type DeepKeysAndValues<T> =
|
|
126
|
+
DeepKeysAndValuesImpl<T> extends AnyDeepKeyAndValue
|
|
127
|
+
? DeepKeysAndValuesImpl<T>
|
|
128
|
+
: never
|
|
129
|
+
|
|
130
|
+
export type DeepKeysAndValuesImpl<
|
|
119
131
|
T,
|
|
120
132
|
TParent extends AnyDeepKeyAndValue = never,
|
|
121
133
|
TAcc = never,
|
|
@@ -136,9 +148,7 @@ export type DeepKeysAndValues<
|
|
|
136
148
|
: TAcc
|
|
137
149
|
|
|
138
150
|
export type DeepRecord<T> = {
|
|
139
|
-
[TRecord in DeepKeysAndValues<T>
|
|
140
|
-
? DeepKeysAndValues<T>
|
|
141
|
-
: never as TRecord['key']]: TRecord['value']
|
|
151
|
+
[TRecord in DeepKeysAndValues<T> as TRecord['key']]: TRecord['value']
|
|
142
152
|
}
|
|
143
153
|
|
|
144
154
|
/**
|
|
@@ -146,16 +156,13 @@ export type DeepRecord<T> = {
|
|
|
146
156
|
*/
|
|
147
157
|
export type DeepKeys<T> = unknown extends T
|
|
148
158
|
? string
|
|
149
|
-
: DeepKeysAndValues<T>
|
|
150
|
-
? DeepKeysAndValues<T>['key']
|
|
151
|
-
: never
|
|
159
|
+
: DeepKeysAndValues<T>['key']
|
|
152
160
|
|
|
153
161
|
/**
|
|
154
162
|
* Infer the type of a deeply nested property within an object or an array.
|
|
155
163
|
*/
|
|
156
|
-
export type DeepValue<TValue, TAccessor> =
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
: never
|
|
164
|
+
export type DeepValue<TValue, TAccessor> = unknown extends TValue
|
|
165
|
+
? TValue
|
|
166
|
+
: TAccessor extends DeepKeys<TValue>
|
|
167
|
+
? DeepRecord<TValue>[TAccessor]
|
|
161
168
|
: never
|