@tanstack/form-core 0.19.1 → 0.19.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.
@@ -30,14 +30,5 @@ type PrefixFromDepth<T extends string | number, TDepth extends any[]> = TDepth['
30
30
  Infer the type of a deeply nested property within an object or an array.
31
31
  See the tests in `util-types.test-d.ts` for usage.
32
32
  */
33
- export type DeepValue<TValue, TAccessor, TDepth extends any[] = []> = TDepth['length'] extends 3 ? never : TValue extends ReadonlyArray<any> ? TAccessor extends `[${infer TBrackets}].${infer TAfter}` ? DeepValue<DeepValue<TValue, TBrackets, [...TDepth, any]>, TAfter, [
34
- ...TDepth,
35
- any
36
- ]> : TAccessor extends `[${infer TBrackets}]` ? DeepValue<TValue, TBrackets, [...TDepth, any]> : TAccessor extends keyof TValue ? TValue[TAccessor] : TValue[TAccessor & number] : TValue extends Record<string | number, any> ? TAccessor extends `${infer TBefore}[${infer TEverythingElse}` ? DeepValue<DeepValue<TValue, TBefore, [...TDepth, any]>, `[${TEverythingElse}`, [
37
- ...TDepth,
38
- any
39
- ]> : TAccessor extends `[${infer TBrackets}]` ? DeepValue<TValue, TBrackets, [...TDepth, any]> : TAccessor extends `${infer TBefore}.${infer TAfter}` ? DeepValue<DeepValue<TValue, TBefore, [...TDepth, any]>, TAfter, [
40
- ...TDepth,
41
- any
42
- ]> : TAccessor extends string ? TValue[TAccessor] : never : never;
33
+ export type DeepValue<TValue, TAccessor> = unknown extends TValue ? TValue : TValue extends ReadonlyArray<any> ? TAccessor extends `[${infer TBrackets}].${infer TAfter}` ? DeepValue<DeepValue<TValue, TBrackets>, TAfter> : TAccessor extends `[${infer TBrackets}]` ? DeepValue<TValue, TBrackets> : TAccessor extends keyof TValue ? TValue[TAccessor] : TValue[TAccessor & number] : TValue extends Record<string | number, any> ? TAccessor extends `${infer TBefore}[${infer TEverythingElse}` ? DeepValue<DeepValue<TValue, TBefore>, `[${TEverythingElse}`> : TAccessor extends `[${infer TBrackets}]` ? DeepValue<TValue, TBrackets> : TAccessor extends `${infer TBefore}.${infer TAfter}` ? DeepValue<DeepValue<TValue, TBefore>, TAfter> : TAccessor extends string ? TValue[TAccessor] : never : never;
43
34
  export {};
@@ -30,14 +30,5 @@ type PrefixFromDepth<T extends string | number, TDepth extends any[]> = TDepth['
30
30
  Infer the type of a deeply nested property within an object or an array.
31
31
  See the tests in `util-types.test-d.ts` for usage.
32
32
  */
33
- export type DeepValue<TValue, TAccessor, TDepth extends any[] = []> = TDepth['length'] extends 3 ? never : TValue extends ReadonlyArray<any> ? TAccessor extends `[${infer TBrackets}].${infer TAfter}` ? DeepValue<DeepValue<TValue, TBrackets, [...TDepth, any]>, TAfter, [
34
- ...TDepth,
35
- any
36
- ]> : TAccessor extends `[${infer TBrackets}]` ? DeepValue<TValue, TBrackets, [...TDepth, any]> : TAccessor extends keyof TValue ? TValue[TAccessor] : TValue[TAccessor & number] : TValue extends Record<string | number, any> ? TAccessor extends `${infer TBefore}[${infer TEverythingElse}` ? DeepValue<DeepValue<TValue, TBefore, [...TDepth, any]>, `[${TEverythingElse}`, [
37
- ...TDepth,
38
- any
39
- ]> : TAccessor extends `[${infer TBrackets}]` ? DeepValue<TValue, TBrackets, [...TDepth, any]> : TAccessor extends `${infer TBefore}.${infer TAfter}` ? DeepValue<DeepValue<TValue, TBefore, [...TDepth, any]>, TAfter, [
40
- ...TDepth,
41
- any
42
- ]> : TAccessor extends string ? TValue[TAccessor] : never : never;
33
+ export type DeepValue<TValue, TAccessor> = unknown extends TValue ? TValue : TValue extends ReadonlyArray<any> ? TAccessor extends `[${infer TBrackets}].${infer TAfter}` ? DeepValue<DeepValue<TValue, TBrackets>, TAfter> : TAccessor extends `[${infer TBrackets}]` ? DeepValue<TValue, TBrackets> : TAccessor extends keyof TValue ? TValue[TAccessor] : TValue[TAccessor & number] : TValue extends Record<string | number, any> ? TAccessor extends `${infer TBefore}[${infer TEverythingElse}` ? DeepValue<DeepValue<TValue, TBefore>, `[${TEverythingElse}`> : TAccessor extends `[${infer TBrackets}]` ? DeepValue<TValue, TBrackets> : TAccessor extends `${infer TBefore}.${infer TAfter}` ? DeepValue<DeepValue<TValue, TBefore>, TAfter> : TAccessor extends string ? TValue[TAccessor] : never : never;
43
34
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/form-core",
3
- "version": "0.19.1",
3
+ "version": "0.19.2",
4
4
  "description": "Powerful, type-safe, framework agnostic forms.",
5
5
  "author": "tannerlinsley",
6
6
  "license": "MIT",
@@ -135,3 +135,17 @@ type FormDefinitionValue = DeepValue<
135
135
  >
136
136
 
137
137
  assertType<string>(0 as never as FormDefinitionValue)
138
+
139
+ type DoubleDeepArray = DeepValue<
140
+ {
141
+ people: {
142
+ parents: {
143
+ name: string
144
+ age: number
145
+ }[]
146
+ }[]
147
+ },
148
+ `people[${0}].parents[${0}].name`
149
+ >
150
+
151
+ assertType<string>(0 as never as DoubleDeepArray)
package/src/util-types.ts CHANGED
@@ -96,12 +96,10 @@ export type DeepValue<
96
96
  TValue,
97
97
  // A string representing the path of the property we're trying to access
98
98
  TAccessor,
99
- // (Optional) An array representing the current depth of recursion
100
- TDepth extends any[] = [],
101
99
  > =
102
- // Limit the depth of recursion to 3 levels
103
- TDepth['length'] extends 3
104
- ? never
100
+ // If TValue is any it will recurse forever, this terminates the recursion
101
+ unknown extends TValue
102
+ ? TValue
105
103
  : // Check if we're looking for the property in an array
106
104
  TValue extends ReadonlyArray<any>
107
105
  ? TAccessor extends `[${infer TBrackets}].${infer TAfter}`
@@ -109,32 +107,20 @@ export type DeepValue<
109
107
  Extract the first element from the accessor path (`TBrackets`)
110
108
  and recursively call `DeepValue` with it
111
109
  */
112
- DeepValue<
113
- DeepValue<TValue, TBrackets, [...TDepth, any]>,
114
- TAfter,
115
- [...TDepth, any]
116
- >
110
+ DeepValue<DeepValue<TValue, TBrackets>, TAfter>
117
111
  : TAccessor extends `[${infer TBrackets}]`
118
- ? DeepValue<TValue, TBrackets, [...TDepth, any]>
112
+ ? DeepValue<TValue, TBrackets>
119
113
  : TAccessor extends keyof TValue
120
114
  ? TValue[TAccessor]
121
115
  : TValue[TAccessor & number]
122
116
  : // Check if we're looking for the property in an object
123
117
  TValue extends Record<string | number, any>
124
118
  ? TAccessor extends `${infer TBefore}[${infer TEverythingElse}`
125
- ? DeepValue<
126
- DeepValue<TValue, TBefore, [...TDepth, any]>,
127
- `[${TEverythingElse}`,
128
- [...TDepth, any]
129
- >
119
+ ? DeepValue<DeepValue<TValue, TBefore>, `[${TEverythingElse}`>
130
120
  : TAccessor extends `[${infer TBrackets}]`
131
- ? DeepValue<TValue, TBrackets, [...TDepth, any]>
121
+ ? DeepValue<TValue, TBrackets>
132
122
  : TAccessor extends `${infer TBefore}.${infer TAfter}`
133
- ? DeepValue<
134
- DeepValue<TValue, TBefore, [...TDepth, any]>,
135
- TAfter,
136
- [...TDepth, any]
137
- >
123
+ ? DeepValue<DeepValue<TValue, TBefore>, TAfter>
138
124
  : TAccessor extends string
139
125
  ? TValue[TAccessor]
140
126
  : never