@tanstack/form-core 0.21.0 → 0.21.1

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.
@@ -24,9 +24,9 @@ type PrefixTupleAccessor<T extends any[], TIndex extends number, TDepth extends
24
24
  [K in TIndex]: `[${K}]` | `[${K}]${DeepKeys<T[K], TDepth>}`;
25
25
  }[TIndex];
26
26
  type PrefixObjectAccessor<T extends object, TDepth extends any[]> = {
27
- [K in keyof T]: K extends string | number ? PrefixFromDepth<K, TDepth> | `${PrefixFromDepth<K, TDepth>}${DeepKeys<T[K], [TDepth]>}` : never;
27
+ [K in keyof T]-?: K extends string | number ? PrefixFromDepth<K, TDepth> | `${PrefixFromDepth<K, TDepth>}${DeepKeys<T[K], [TDepth]>}` : never;
28
28
  }[keyof T];
29
- export type DeepKeys<T, TDepth extends any[] = []> = TDepth['length'] extends 5 ? never : unknown extends T ? PrefixFromDepth<string, TDepth> : object extends T ? PrefixFromDepth<string, TDepth> : T extends readonly any[] & IsTuple<T> ? PrefixTupleAccessor<T, AllowedIndexes<T>, TDepth> : T extends any[] ? PrefixArrayAccessor<T, [...TDepth, any]> : T extends Date ? never : T extends object ? PrefixObjectAccessor<T, TDepth> : T extends string | number | boolean | bigint ? '' : never;
29
+ export type DeepKeys<T, TDepth extends any[] = []> = TDepth['length'] extends 5 ? never : unknown extends T ? PrefixFromDepth<string, TDepth> : T extends readonly any[] & IsTuple<T> ? PrefixTupleAccessor<T, AllowedIndexes<T>, TDepth> : T extends any[] ? PrefixArrayAccessor<T, [...TDepth, any]> : T extends Date ? never : T extends object ? PrefixObjectAccessor<T, TDepth> : T extends string | number | boolean | bigint ? '' : never;
30
30
  type PrefixFromDepth<T extends string | number, TDepth extends any[]> = TDepth['length'] extends 0 ? T : `.${T}`;
31
31
  /**
32
32
  Infer the type of a deeply nested property within an object or an array.
@@ -24,9 +24,9 @@ type PrefixTupleAccessor<T extends any[], TIndex extends number, TDepth extends
24
24
  [K in TIndex]: `[${K}]` | `[${K}]${DeepKeys<T[K], TDepth>}`;
25
25
  }[TIndex];
26
26
  type PrefixObjectAccessor<T extends object, TDepth extends any[]> = {
27
- [K in keyof T]: K extends string | number ? PrefixFromDepth<K, TDepth> | `${PrefixFromDepth<K, TDepth>}${DeepKeys<T[K], [TDepth]>}` : never;
27
+ [K in keyof T]-?: K extends string | number ? PrefixFromDepth<K, TDepth> | `${PrefixFromDepth<K, TDepth>}${DeepKeys<T[K], [TDepth]>}` : never;
28
28
  }[keyof T];
29
- export type DeepKeys<T, TDepth extends any[] = []> = TDepth['length'] extends 5 ? never : unknown extends T ? PrefixFromDepth<string, TDepth> : object extends T ? PrefixFromDepth<string, TDepth> : T extends readonly any[] & IsTuple<T> ? PrefixTupleAccessor<T, AllowedIndexes<T>, TDepth> : T extends any[] ? PrefixArrayAccessor<T, [...TDepth, any]> : T extends Date ? never : T extends object ? PrefixObjectAccessor<T, TDepth> : T extends string | number | boolean | bigint ? '' : never;
29
+ export type DeepKeys<T, TDepth extends any[] = []> = TDepth['length'] extends 5 ? never : unknown extends T ? PrefixFromDepth<string, TDepth> : T extends readonly any[] & IsTuple<T> ? PrefixTupleAccessor<T, AllowedIndexes<T>, TDepth> : T extends any[] ? PrefixArrayAccessor<T, [...TDepth, any]> : T extends Date ? never : T extends object ? PrefixObjectAccessor<T, TDepth> : T extends string | number | boolean | bigint ? '' : never;
30
30
  type PrefixFromDepth<T extends string | number, TDepth extends any[]> = TDepth['length'] extends 0 ? T : `.${T}`;
31
31
  /**
32
32
  Infer the type of a deeply nested property within an object or an array.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/form-core",
3
- "version": "0.21.0",
3
+ "version": "0.21.1",
4
4
  "description": "Powerful, type-safe, framework agnostic forms.",
5
5
  "author": "tannerlinsley",
6
6
  "license": "MIT",
@@ -33,7 +33,7 @@
33
33
  "src"
34
34
  ],
35
35
  "dependencies": {
36
- "@tanstack/store": "^0.3.1"
36
+ "@tanstack/store": "^0.4.1"
37
37
  },
38
38
  "scripts": {}
39
39
  }
@@ -41,6 +41,18 @@ assertType<
41
41
  | 'meta.mainUser.age'
42
42
  >(0 as never as NestedSupport)
43
43
 
44
+ /**
45
+ * Properly handles deep partial object nesting like so:
46
+ */
47
+ type NestedPartialSupport = DeepKeys<{ meta?: { mainUser?: User } }>
48
+ assertType<
49
+ | 'meta'
50
+ | 'meta.mainUser'
51
+ | 'meta.mainUser.name'
52
+ | 'meta.mainUser.id'
53
+ | 'meta.mainUser.age'
54
+ >(0 as never as NestedPartialSupport)
55
+
44
56
  /**
45
57
  * Properly handles `object` edgecase nesting like so:
46
58
  */
package/src/util-types.ts CHANGED
@@ -60,7 +60,7 @@ type PrefixTupleAccessor<
60
60
  }[TIndex]
61
61
 
62
62
  type PrefixObjectAccessor<T extends object, TDepth extends any[]> = {
63
- [K in keyof T]: K extends string | number
63
+ [K in keyof T]-?: K extends string | number
64
64
  ?
65
65
  | PrefixFromDepth<K, TDepth>
66
66
  | `${PrefixFromDepth<K, TDepth>}${DeepKeys<T[K], [TDepth]>}`
@@ -71,19 +71,17 @@ export type DeepKeys<T, TDepth extends any[] = []> = TDepth['length'] extends 5
71
71
  ? never
72
72
  : unknown extends T
73
73
  ? PrefixFromDepth<string, TDepth>
74
- : object extends T
75
- ? PrefixFromDepth<string, TDepth>
76
- : T extends readonly any[] & IsTuple<T>
77
- ? PrefixTupleAccessor<T, AllowedIndexes<T>, TDepth>
78
- : T extends any[]
79
- ? PrefixArrayAccessor<T, [...TDepth, any]>
80
- : T extends Date
81
- ? never
82
- : T extends object
83
- ? PrefixObjectAccessor<T, TDepth>
84
- : T extends string | number | boolean | bigint
85
- ? ''
86
- : never
74
+ : T extends readonly any[] & IsTuple<T>
75
+ ? PrefixTupleAccessor<T, AllowedIndexes<T>, TDepth>
76
+ : T extends any[]
77
+ ? PrefixArrayAccessor<T, [...TDepth, any]>
78
+ : T extends Date
79
+ ? never
80
+ : T extends object
81
+ ? PrefixObjectAccessor<T, TDepth>
82
+ : T extends string | number | boolean | bigint
83
+ ? ''
84
+ : never
87
85
 
88
86
  type PrefixFromDepth<
89
87
  T extends string | number,