@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'
|
|
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
|
|
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<
|
|
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
package/dist/types/util.d.ts
CHANGED
|
@@ -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
|
|
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
|
@@ -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'
|
|
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>
|
|
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
|
-
|
|
16
|
-
?
|
|
17
|
-
?
|
|
18
|
-
?
|
|
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
|
-
?
|
|
27
|
-
? PickProps<
|
|
20
|
+
? RequiredEntity[TRoot] extends object
|
|
21
|
+
? PickProps<RequiredEntity[TRoot], TRest>
|
|
28
22
|
: never
|
|
29
23
|
: never
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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.
|