@sprucelabs/schema 30.0.580 → 30.0.581
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.
|
@@ -4,21 +4,21 @@ export type IsArray<T, IsArray> = IsArray extends true ? Unpack<T>[] : Unpack<T>
|
|
|
4
4
|
export type IsArrayNoUnpack<T, IsArray> = IsArray extends true ? T[] : T;
|
|
5
5
|
export type IsRequired<T, IsRequired> = IsRequired extends true ? T : T | undefined | null;
|
|
6
6
|
export type AreAnyFieldsRequired<S extends Schema | undefined> = S extends Schema ? SchemaRequiredFieldNames<S> extends [] ? false : true : false;
|
|
7
|
-
export type ValuesWithPaths<Values, Keys extends
|
|
7
|
+
export type ValuesWithPaths<Values, Keys extends PathsWithDotNotation<Values> = PathsWithDotNotation<Values>> = {
|
|
8
8
|
[K in RequiredKeys<Values, Keys>]: TypeAtPath<Values, K>;
|
|
9
9
|
} & {
|
|
10
10
|
[K in OptionalKeys<Values, Keys>]?: TypeAtPath<Values, K>;
|
|
11
11
|
};
|
|
12
12
|
type IsOptional<T, K extends keyof T> = T extends any ? {} extends Pick<T, K> ? true : false : never;
|
|
13
13
|
type IsPathOptional<T, P extends string> = T extends any ? P extends `${infer K}.${infer Rest}` ? K extends keyof T ? IsOptional<T, K> extends true ? true : IsPathOptional<T[K], Rest> : true : P extends keyof T ? IsOptional<T, P> : true : true;
|
|
14
|
-
type RequiredKeys<Values, Keys extends
|
|
14
|
+
type RequiredKeys<Values, Keys extends PathsWithDotNotation<Values>> = {
|
|
15
15
|
[K in Keys]: IsPathOptional<Values, K> extends true ? never : K;
|
|
16
16
|
}[Keys];
|
|
17
|
-
type OptionalKeys<Values, Keys extends
|
|
18
|
-
type
|
|
19
|
-
[K in keyof T]-?: K extends string | number ? `${K}` | Join<K,
|
|
17
|
+
type OptionalKeys<Values, Keys extends PathsWithDotNotation<Values>> = Exclude<Keys, RequiredKeys<Values, Keys>>;
|
|
18
|
+
export type PathsWithDotNotation<T, D extends number = 3> = [D] extends [never] ? never : T extends object ? {
|
|
19
|
+
[K in keyof T]-?: K extends string | number ? `${K}` | Join<K, PathsWithDotNotation<T[K], Prev[D]>> : never;
|
|
20
20
|
}[keyof T] : '';
|
|
21
|
-
type TypeAtPath<T, P extends string> = T extends any ? T extends null | undefined ? undefined : P extends `${infer K}.${infer Rest}` ? K extends keyof T ? TypeAtPath<T[K], Rest> : any : P extends keyof T ? T[P] : any : never;
|
|
21
|
+
export type TypeAtPath<T, P extends string> = T extends any ? T extends null | undefined ? undefined : P extends `${infer K}.${infer Rest}` ? K extends keyof T ? TypeAtPath<T[K], Rest> : any : P extends keyof T ? T[P] : any : never;
|
|
22
22
|
type Join<K, P> = K extends string | number ? P extends string | number ? `${K}${'' extends P ? '' : '.'}${P}` : never : never;
|
|
23
23
|
type Prev = [
|
|
24
24
|
never,
|
|
@@ -4,21 +4,21 @@ export type IsArray<T, IsArray> = IsArray extends true ? Unpack<T>[] : Unpack<T>
|
|
|
4
4
|
export type IsArrayNoUnpack<T, IsArray> = IsArray extends true ? T[] : T;
|
|
5
5
|
export type IsRequired<T, IsRequired> = IsRequired extends true ? T : T | undefined | null;
|
|
6
6
|
export type AreAnyFieldsRequired<S extends Schema | undefined> = S extends Schema ? SchemaRequiredFieldNames<S> extends [] ? false : true : false;
|
|
7
|
-
export type ValuesWithPaths<Values, Keys extends
|
|
7
|
+
export type ValuesWithPaths<Values, Keys extends PathsWithDotNotation<Values> = PathsWithDotNotation<Values>> = {
|
|
8
8
|
[K in RequiredKeys<Values, Keys>]: TypeAtPath<Values, K>;
|
|
9
9
|
} & {
|
|
10
10
|
[K in OptionalKeys<Values, Keys>]?: TypeAtPath<Values, K>;
|
|
11
11
|
};
|
|
12
12
|
type IsOptional<T, K extends keyof T> = T extends any ? {} extends Pick<T, K> ? true : false : never;
|
|
13
13
|
type IsPathOptional<T, P extends string> = T extends any ? P extends `${infer K}.${infer Rest}` ? K extends keyof T ? IsOptional<T, K> extends true ? true : IsPathOptional<T[K], Rest> : true : P extends keyof T ? IsOptional<T, P> : true : true;
|
|
14
|
-
type RequiredKeys<Values, Keys extends
|
|
14
|
+
type RequiredKeys<Values, Keys extends PathsWithDotNotation<Values>> = {
|
|
15
15
|
[K in Keys]: IsPathOptional<Values, K> extends true ? never : K;
|
|
16
16
|
}[Keys];
|
|
17
|
-
type OptionalKeys<Values, Keys extends
|
|
18
|
-
type
|
|
19
|
-
[K in keyof T]-?: K extends string | number ? `${K}` | Join<K,
|
|
17
|
+
type OptionalKeys<Values, Keys extends PathsWithDotNotation<Values>> = Exclude<Keys, RequiredKeys<Values, Keys>>;
|
|
18
|
+
export type PathsWithDotNotation<T, D extends number = 3> = [D] extends [never] ? never : T extends object ? {
|
|
19
|
+
[K in keyof T]-?: K extends string | number ? `${K}` | Join<K, PathsWithDotNotation<T[K], Prev[D]>> : never;
|
|
20
20
|
}[keyof T] : '';
|
|
21
|
-
type TypeAtPath<T, P extends string> = T extends any ? T extends null | undefined ? undefined : P extends `${infer K}.${infer Rest}` ? K extends keyof T ? TypeAtPath<T[K], Rest> : any : P extends keyof T ? T[P] : any : never;
|
|
21
|
+
export type TypeAtPath<T, P extends string> = T extends any ? T extends null | undefined ? undefined : P extends `${infer K}.${infer Rest}` ? K extends keyof T ? TypeAtPath<T[K], Rest> : any : P extends keyof T ? T[P] : any : never;
|
|
22
22
|
type Join<K, P> = K extends string | number ? P extends string | number ? `${K}${'' extends P ? '' : '.'}${P}` : never : never;
|
|
23
23
|
type Prev = [
|
|
24
24
|
never,
|