@teamnovu/kit-vue-forms 0.0.8 → 0.0.9

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.
@@ -3,17 +3,17 @@ import { Paths, PickProps } from '../types/util';
3
3
  import { UseFieldOptions } from './useField';
4
4
  type FieldRegistryCache<T> = Record<Paths<T>, FormField<any, string>>;
5
5
  export type ResolvedFormField<T, K extends Paths<T>> = FormField<PickProps<T, K>, K>;
6
- export type DefineFieldOptions<F, K extends string> = Pick<UseFieldOptions<F, K>, 'path' | 'type' | 'required'>;
6
+ export type DefineFieldOptions<F, K extends string> = Pick<UseFieldOptions<F, K>, 'path'>;
7
7
  interface FormState<T extends FormDataDefault, TIn extends FormDataDefault = T> {
8
8
  data: T;
9
9
  initialData: TIn;
10
10
  }
11
11
  export declare function useFieldRegistry<T extends FormDataDefault>(formState: FormState<T>): {
12
12
  fields: FieldRegistryCache<T>;
13
- getField: <K extends Paths<T>>(path: K) => ResolvedFormField<T, K> | undefined;
13
+ getField: <K extends Paths<T>>(path: K) => ResolvedFormField<T, K>;
14
14
  getFields: () => ResolvedFormField<T, Paths<T>>[];
15
15
  registerField: <K extends Paths<T>>(field: ResolvedFormField<T, K>) => void;
16
- defineField: <K extends Paths<T>>(options: DefineFieldOptions<PickProps<T, K>, K>) => FormField<PickProps<any, K>, K>;
16
+ defineField: <K extends Paths<T>>(options: DefineFieldOptions<PickProps<T, K>, K>) => FormField<K extends `${infer TRoot}.${infer TRest}` ? TRoot extends string | number | symbol ? TRest extends string ? TRest extends infer T_1 ? T_1 extends TRest ? T_1 extends `${infer TRoot}.${infer TRest}` ? TRoot extends string | number | symbol ? TRest extends string ? TRest extends infer T_2 ? T_2 extends TRest ? T_2 extends `${infer TRoot}.${infer TRest}` ? TRoot extends string | number | symbol ? TRest extends string ? TRest extends infer T_3 ? T_3 extends TRest ? T_3 extends `${infer TRoot}.${infer TRest}` ? TRoot extends string | number | symbol ? TRest extends string ? TRest extends infer T_4 ? T_4 extends TRest ? T_4 extends `${infer TRoot}.${infer TRest}` ? TRoot extends string | number | symbol ? TRest extends string ? TRest extends infer T_5 ? T_5 extends TRest ? T_5 extends `${infer TRoot}.${infer TRest}` ? TRoot extends string | number | symbol ? TRest extends string ? TRest extends infer T_6 ? T_6 extends TRest ? T_6 extends `${infer TRoot}.${infer TRest}` ? TRoot extends string | number | symbol ? TRest extends string ? TRest extends infer T_7 ? T_7 extends TRest ? T_7 extends `${infer TRoot}.${infer TRest}` ? TRoot extends string | number | symbol ? TRest extends string ? TRest extends infer T_8 ? T_8 extends TRest ? T_8 extends `${infer TRoot}.${infer TRest}` ? TRoot extends string | number | symbol ? TRest extends string ? TRest extends infer T_9 ? T_9 extends TRest ? T_9 extends `${infer TRoot}.${infer TRest}` ? TRoot extends string | number | symbol ? TRest extends string ? TRest extends infer T_10 ? T_10 extends TRest ? T_10 extends `${infer TRoot}.${infer TRest}` ? TRoot extends string | number | symbol ? TRest extends string ? /*elided*/ any : never : TRoot extends `${number}` ? never : never : T_10 extends string | number | symbol ? Required<any>[T_10] : T_10 extends `${number}` ? never : never : never : never : never : TRoot extends `${number}` ? never : never : T_9 extends string | number | symbol ? Required<any>[T_9] : T_9 extends `${number}` ? never : never : never : never : never : TRoot extends `${number}` ? never : never : T_8 extends string | number | symbol ? Required<any>[T_8] : T_8 extends `${number}` ? never : never : never : never : never : TRoot extends `${number}` ? never : never : T_7 extends string | number | symbol ? Required<any>[T_7] : T_7 extends `${number}` ? never : never : never : never : never : TRoot extends `${number}` ? never : never : T_6 extends string | number | symbol ? Required<any>[T_6] : T_6 extends `${number}` ? never : never : never : never : never : TRoot extends `${number}` ? never : never : T_5 extends string | number | symbol ? Required<any>[T_5] : T_5 extends `${number}` ? never : never : never : never : never : TRoot extends `${number}` ? never : never : T_4 extends string | number | symbol ? Required<any>[T_4] : T_4 extends `${number}` ? never : never : never : never : never : TRoot extends `${number}` ? never : never : T_3 extends string | number | symbol ? Required<any>[T_3] : T_3 extends `${number}` ? never : never : never : never : never : TRoot extends `${number}` ? never : never : T_2 extends string | number | symbol ? Required<any>[T_2] : T_2 extends `${number}` ? never : never : never : never : never : TRoot extends `${number}` ? never : never : T_1 extends string | number | symbol ? Required<any>[T_1] : T_1 extends `${number}` ? never : never : never : never : never : TRoot extends `${number}` ? never : never : K extends string | number | symbol ? any : K extends `${number}` ? never : never, K>;
17
17
  };
18
18
  export type FieldRegistry<T extends FormDataDefault> = ReturnType<typeof useFieldRegistry<T>>;
19
19
  export {};
package/dist/index.mjs CHANGED
@@ -97,7 +97,7 @@ function H(e) {
97
97
  };
98
98
  return {
99
99
  fields: r,
100
- getField: (u) => r[u],
100
+ getField: (u) => r[u] ?? {},
101
101
  getFields: () => Object.values(r),
102
102
  registerField: t,
103
103
  defineField: (u) => {
@@ -6,7 +6,7 @@ export type SplitPath<TPath extends string> = TPath extends `${infer T1}.${infer
6
6
  /**
7
7
  * Picks the exact type of the Entity at the nested PropertyKeys path.
8
8
  */
9
- export type PickProps<Entity, PropertyKeys extends string> = PropertyKeys extends `${infer TRoot}.${infer TRest}` ? TRoot extends keyof Entity ? TRest extends string ? Entity[TRoot] extends object ? PickProps<Entity[TRoot], TRest> : never : never : TRoot extends `${number}` ? Entity extends unknown[] ? TRest extends string ? Entity[number] extends object ? PickProps<Entity[number], TRest> : never : never : never : never : PropertyKeys extends keyof Entity ? Entity[PropertyKeys] : PropertyKeys extends `${number}` ? Entity extends unknown[] ? Entity[number] : never : never;
9
+ export type PickProps<Entity, PropertyKeys extends string> = Entity extends NonNullable<infer NonNullEntity> ? Required<NonNullEntity> extends infer RequiredEntity ? PropertyKeys extends `${infer TRoot}.${infer TRest}` ? TRoot extends keyof RequiredEntity ? TRest extends string ? RequiredEntity[TRoot] extends object ? PickProps<RequiredEntity[TRoot], TRest> : never : never : TRoot extends `${number}` ? RequiredEntity extends unknown[] ? TRest extends string ? RequiredEntity[number] extends object ? PickProps<RequiredEntity[number], TRest> : never : never : never : never : PropertyKeys extends keyof Required<RequiredEntity> ? RequiredEntity[PropertyKeys] : PropertyKeys extends `${number}` ? RequiredEntity extends unknown[] ? RequiredEntity[number] : never : never : never : never;
10
10
  /**
11
11
  * Resolves to a union of dot-connected paths of all nested properties of T.
12
12
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teamnovu/kit-vue-forms",
3
- "version": "0.0.8",
3
+ "version": "0.0.9",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "exports": {
@@ -9,7 +9,7 @@ type FieldRegistryCache<T> = Record<Paths<T>, FormField<any, string>>
9
9
 
10
10
  export type ResolvedFormField<T, K extends Paths<T>> = FormField<PickProps<T, K>, K>
11
11
 
12
- export type DefineFieldOptions<F, K extends string> = Pick<UseFieldOptions<F, K>, 'path' | 'type' | 'required'>
12
+ export type DefineFieldOptions<F, K extends string> = Pick<UseFieldOptions<F, K>, 'path'>
13
13
 
14
14
  interface FormState<T extends FormDataDefault, TIn extends FormDataDefault = T> {
15
15
  data: T
@@ -27,7 +27,7 @@ export function useFieldRegistry<T extends FormDataDefault>(
27
27
  }
28
28
 
29
29
  const getField = <K extends Paths<T>>(path: K) => {
30
- return fields[path] as ResolvedFormField<T, K> | undefined
30
+ return (fields[path] ?? {}) as ResolvedFormField<T, K>
31
31
  }
32
32
 
33
33
  const getFields = () => {
package/src/types/util.ts CHANGED
@@ -12,31 +12,35 @@ export type SplitPath<TPath extends string> =
12
12
  * Picks the exact type of the Entity at the nested PropertyKeys path.
13
13
  */
14
14
  export type PickProps<Entity, PropertyKeys extends string> =
15
- PropertyKeys extends `${infer TRoot}.${infer TRest}`
16
- ? TRoot extends keyof Entity
17
- ? TRest extends string
18
- ? Entity[TRoot] extends object
19
- ? PickProps<Entity[TRoot], TRest>
20
- : never
21
- : never
22
- // We might have an array at hand but the key is a string with a number in it
23
- : TRoot extends `${number}`
24
- ? Entity extends unknown[]
15
+ Entity extends NonNullable<infer NonNullEntity>
16
+ ? Required<NonNullEntity> extends infer RequiredEntity
17
+ ? PropertyKeys extends `${infer TRoot}.${infer TRest}`
18
+ ? TRoot extends keyof RequiredEntity
25
19
  ? TRest extends string
26
- ? Entity[number] extends object
27
- ? PickProps<Entity[number], TRest>
20
+ ? RequiredEntity[TRoot] extends object
21
+ ? PickProps<RequiredEntity[TRoot], TRest>
28
22
  : never
29
23
  : never
30
- : never
31
- : never
32
- // We might have an array at hand but the key is a string with a number in it
33
- : PropertyKeys extends keyof Entity
34
- ? Entity[PropertyKeys]
35
- : PropertyKeys extends `${number}`
36
- ? Entity extends unknown[]
37
- ? Entity[number]
38
- : never
39
- : never
24
+ // We might have an array at hand but the key is a string with a number in it
25
+ : TRoot extends `${number}`
26
+ ? RequiredEntity extends unknown[]
27
+ ? TRest extends string
28
+ ? RequiredEntity[number] extends object
29
+ ? PickProps<RequiredEntity[number], TRest>
30
+ : never
31
+ : never
32
+ : never
33
+ : never
34
+ // We might have an array at hand but the key is a string with a number in it
35
+ : PropertyKeys extends keyof Required<RequiredEntity>
36
+ ? RequiredEntity[PropertyKeys]
37
+ : PropertyKeys extends `${number}`
38
+ ? RequiredEntity extends unknown[]
39
+ ? RequiredEntity[number]
40
+ : never
41
+ : never
42
+ : never
43
+ : never
40
44
 
41
45
  /**
42
46
  * Resolves to a union of dot-connected paths of all nested properties of T.