@strictly/define 0.0.21 → 0.0.23
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.
- package/.out/transformers/flatteners/flatten_type_to.js +1 -1
- package/.out/transformers/flatteners/flatten_value_to.js +9 -9
- package/.out/transformers/flatteners/json_path.d.ts +1 -1
- package/.out/transformers/flatteners/json_path.js +2 -2
- package/.out/transformers/flatteners/specs/flatten_json_value_to_type_paths_of.tests.js +2 -2
- package/.out/transformers/flatteners/specs/flatten_type_to.tests.js +2 -2
- package/.out/transformers/flatteners/specs/flatten_value_to.tests.js +2 -2
- package/.out/transformers/flatteners/specs/json_paths.tests.js +2 -2
- package/.out/transformers/flatteners/specs/value_path_to_type_path.tests.js +82 -8
- package/.out/transformers/flatteners/value_path_to_type_path.js +26 -25
- package/.out/tsconfig.tsbuildinfo +1 -1
- package/.out/types/flattened_types_of_type.d.ts +11 -11
- package/.out/types/flattened_types_of_validating_type.d.ts +11 -11
- package/.out/types/paths_of_type.d.ts +7 -7
- package/.out/types/value_to_type_paths_of_type.d.ts +7 -7
- package/.turbo/turbo-build.log +8 -8
- package/.turbo/turbo-release$colon$exports.log +1 -1
- package/dist/index.cjs +52 -40
- package/dist/index.d.cts +37 -37
- package/dist/index.d.ts +37 -37
- package/dist/index.js +52 -40
- package/package.json +5 -3
- package/transformers/flatteners/flatten_type_to.ts +2 -2
- package/transformers/flatteners/flatten_value_to.ts +8 -12
- package/transformers/flatteners/json_path.ts +3 -3
- package/transformers/flatteners/specs/flatten_json_value_to_type_paths_of.tests.ts +2 -2
- package/transformers/flatteners/specs/flatten_type_to.tests.ts +2 -2
- package/transformers/flatteners/specs/flatten_value_to.tests.ts +2 -2
- package/transformers/flatteners/specs/json_paths.tests.ts +3 -3
- package/transformers/flatteners/specs/value_path_to_type_path.tests.ts +92 -8
- package/transformers/flatteners/value_path_to_type_path.ts +37 -23
- package/types/flattened_types_of_type.ts +7 -18
- package/types/flattened_types_of_validating_type.ts +7 -19
- package/types/paths_of_type.ts +16 -22
- package/types/specs/flattened_types_of_type.tests.ts +6 -6
- package/types/specs/paths_of_type.tests.ts +2 -2
- package/types/specs/value_to_type_paths_of_type.tests.ts +4 -4
- package/types/value_to_type_paths_of_type.ts +5 -12
|
@@ -2,23 +2,23 @@ import { type UnionToIntersection } from 'type-fest';
|
|
|
2
2
|
import { type ListTypeDef, type LiteralTypeDef, type ObjectTypeDef, type RecordTypeDef, type Type, type TypeDef, type UnionTypeDef } from './definitions';
|
|
3
3
|
import { type Depths, type StartingDepth } from './flattened';
|
|
4
4
|
import { type PathOf } from './path_of';
|
|
5
|
-
export type FlattenedTypesOfType<T extends Type, SegmentOverride extends string | null, Path extends string = '$', Depth extends number = StartingDepth> = InternalFlattenedTypeDefsOf<T['definition'], SegmentOverride, Path,
|
|
6
|
-
type InternalFlattenedTypeDefsOf<T extends TypeDef, SegmentOverride extends string | null, Path extends string,
|
|
5
|
+
export type FlattenedTypesOfType<T extends Type, SegmentOverride extends string | null, Path extends string = '$', Depth extends number = StartingDepth> = InternalFlattenedTypeDefsOf<T['definition'], SegmentOverride, Path, Depth>;
|
|
6
|
+
type InternalFlattenedTypeDefsOf<T extends TypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = {
|
|
7
7
|
readonly [K in Path]: Type<T>;
|
|
8
|
-
} & InternalFlattenedTypeDefsOfChildren<T, SegmentOverride, Path,
|
|
9
|
-
type InternalFlattenedTypeDefsOfChildren<T extends TypeDef, SegmentOverride extends string | null, Path extends string,
|
|
8
|
+
} & InternalFlattenedTypeDefsOfChildren<T, SegmentOverride, Path, Depth>;
|
|
9
|
+
type InternalFlattenedTypeDefsOfChildren<T extends TypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number, NextDepth extends number = Depths[Depth]> = NextDepth extends -1 ? never : T extends LiteralTypeDef ? InternalFlattenedTypeDefsOfLiteralChildren : T extends ListTypeDef ? InternalFlattenedTypeDefsOfListChildren<T, SegmentOverride, Path, NextDepth> : T extends RecordTypeDef ? InternalFlattenedTypeDefsOfRecordChildren<T, SegmentOverride, Path, NextDepth> : T extends ObjectTypeDef ? InternalFlattenedTypeDefsOfObjectChildren<T, SegmentOverride, Path, NextDepth> : T extends UnionTypeDef ? InternalFlattenedTypeDefsOfUnionChildren<T, SegmentOverride, Path, NextDepth> : never;
|
|
10
10
|
type InternalFlattenedTypeDefsOfLiteralChildren = {};
|
|
11
|
-
type InternalFlattenedTypeDefsOfListChildren<T extends ListTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf<T['elements'], SegmentOverride, PathOf<Path, number, SegmentOverride>,
|
|
12
|
-
type InternalFlattenedTypeDefsOfRecordChildren<T extends RecordTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf<T['valueTypeDef'], SegmentOverride, PathOf<Path, T['keyPrototype'], SegmentOverride>,
|
|
13
|
-
type InternalFlattenedTypeDefsOfObjectChildren<T extends ObjectTypeDef, SegmentOverride extends string | null, Path extends string,
|
|
11
|
+
type InternalFlattenedTypeDefsOfListChildren<T extends ListTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf<T['elements'], SegmentOverride, PathOf<Path, number, SegmentOverride>, Depth>;
|
|
12
|
+
type InternalFlattenedTypeDefsOfRecordChildren<T extends RecordTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf<T['valueTypeDef'], SegmentOverride, PathOf<Path, T['keyPrototype'], SegmentOverride>, Depth>;
|
|
13
|
+
type InternalFlattenedTypeDefsOfObjectChildren<T extends ObjectTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = T extends ObjectTypeDef<infer Fields> ? keyof Fields extends string ? UnionToIntersection<{
|
|
14
14
|
readonly [K in keyof Fields]-?: undefined extends Fields[K] ? InternalFlattenedTypeDefsOf<UnionTypeDef<null, {
|
|
15
15
|
readonly '0': Exclude<Fields[K], undefined>;
|
|
16
16
|
readonly '1': LiteralTypeDef<undefined>;
|
|
17
|
-
}>, SegmentOverride, PathOf<Path,
|
|
17
|
+
}>, SegmentOverride, PathOf<Path, K, null>, Depth> : InternalFlattenedTypeDefsOf<Exclude<Fields[K], undefined>, SegmentOverride, PathOf<Path, K, null>, Depth>;
|
|
18
18
|
}[keyof Fields]> : never : never;
|
|
19
|
-
type InternalFlattenedTypeDefsOfUnionChildren<T extends UnionTypeDef, SegmentOverride extends string | null, Path extends string,
|
|
20
|
-
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren<Unions[K], SegmentOverride, Path,
|
|
19
|
+
type InternalFlattenedTypeDefsOfUnionChildren<T extends UnionTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = T extends UnionTypeDef<infer D, infer Unions> ? keyof Unions extends string ? D extends null ? UnionToIntersection<{
|
|
20
|
+
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren<Unions[K], SegmentOverride, Path, Depth>;
|
|
21
21
|
}[keyof Unions]> : UnionToIntersection<{
|
|
22
|
-
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren<Unions[K], SegmentOverride,
|
|
22
|
+
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren<Unions[K], SegmentOverride, `${Path}:${K}`, Depth>;
|
|
23
23
|
}[keyof Unions]> : never : never;
|
|
24
24
|
export {};
|
|
@@ -3,23 +3,23 @@ import { type Type, type TypeDef } from './definitions';
|
|
|
3
3
|
import { type Depths, type StartingDepth } from './flattened';
|
|
4
4
|
import { type PathOf } from './path_of';
|
|
5
5
|
import { type ContextOfValidatingTypeDef, type ErrorOfValidatingTypeDef, type ValidatingListTypeDef, type ValidatingLiteralTypeDef, type ValidatingObjectTypeDef, type ValidatingRecordTypeDef, type ValidatingUnionTypeDef } from './validating_definitions';
|
|
6
|
-
export type FlattenedTypesOfValidatingType<T extends Type, SegmentOverride extends string | null, Path extends string = '$', Depth extends number = StartingDepth> = InternalFlattenedTypeDefsOf<T['definition'], SegmentOverride, Path,
|
|
7
|
-
type InternalFlattenedTypeDefsOf<T extends TypeDef, SegmentOverride extends string | null, Path extends string,
|
|
6
|
+
export type FlattenedTypesOfValidatingType<T extends Type, SegmentOverride extends string | null, Path extends string = '$', Depth extends number = StartingDepth> = InternalFlattenedTypeDefsOf<T['definition'], SegmentOverride, Path, Depth>;
|
|
7
|
+
type InternalFlattenedTypeDefsOf<T extends TypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = {
|
|
8
8
|
readonly [K in Path]: Type<T>;
|
|
9
|
-
} & InternalFlattenedTypeDefsOfChildren<T, SegmentOverride, Path,
|
|
10
|
-
type InternalFlattenedTypeDefsOfChildren<T extends TypeDef, SegmentOverride extends string | null, Path extends string,
|
|
9
|
+
} & InternalFlattenedTypeDefsOfChildren<T, SegmentOverride, Path, Depth>;
|
|
10
|
+
type InternalFlattenedTypeDefsOfChildren<T extends TypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number, NextDepth extends number = Depths[Depth]> = NextDepth extends -1 ? never : T extends ValidatingLiteralTypeDef ? InternalFlattenedTypeDefsOfLiteralChildren : T extends ValidatingListTypeDef ? InternalFlattenedTypeDefsOfListChildren<T, SegmentOverride, Path, NextDepth> : T extends ValidatingRecordTypeDef ? InternalFlattenedTypeDefsOfRecordChildren<T, SegmentOverride, Path, NextDepth> : T extends ValidatingObjectTypeDef ? InternalFlattenedTypeDefsOfObjectChildren<T, SegmentOverride, Path, NextDepth> : T extends ValidatingUnionTypeDef ? InternalFlattenedTypeDefsOfUnionChildren<T, SegmentOverride, Path, NextDepth> : never;
|
|
11
11
|
type InternalFlattenedTypeDefsOfLiteralChildren = {};
|
|
12
|
-
type InternalFlattenedTypeDefsOfListChildren<T extends ValidatingListTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf<T['elements'], SegmentOverride, PathOf<Path, number, SegmentOverride>,
|
|
13
|
-
type InternalFlattenedTypeDefsOfRecordChildren<T extends ValidatingRecordTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf<T['valueTypeDef'], SegmentOverride, PathOf<Path, T['keyPrototype'], SegmentOverride>,
|
|
14
|
-
type InternalFlattenedTypeDefsOfObjectChildren<T extends ValidatingObjectTypeDef, SegmentOverride extends string | null, Path extends string,
|
|
12
|
+
type InternalFlattenedTypeDefsOfListChildren<T extends ValidatingListTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf<T['elements'], SegmentOverride, PathOf<Path, number, SegmentOverride>, Depth>;
|
|
13
|
+
type InternalFlattenedTypeDefsOfRecordChildren<T extends ValidatingRecordTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf<T['valueTypeDef'], SegmentOverride, PathOf<Path, T['keyPrototype'], SegmentOverride>, Depth>;
|
|
14
|
+
type InternalFlattenedTypeDefsOfObjectChildren<T extends ValidatingObjectTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = T extends ValidatingObjectTypeDef<infer _E, infer _C, infer Fields> ? keyof Fields extends string ? UnionToIntersection<{
|
|
15
15
|
readonly [K in keyof Fields]-?: undefined extends Fields[K] ? InternalFlattenedTypeDefsOf<ValidatingUnionTypeDef<ErrorOfValidatingTypeDef<Exclude<Fields[K], undefined>>, ContextOfValidatingTypeDef<Exclude<Fields[K], undefined>>, null, {
|
|
16
16
|
readonly '0': Exclude<Fields[K], undefined>;
|
|
17
17
|
readonly '1': ValidatingLiteralTypeDef<undefined>;
|
|
18
|
-
}>, SegmentOverride, PathOf<Path,
|
|
18
|
+
}>, SegmentOverride, PathOf<Path, K, null>, Depth> : InternalFlattenedTypeDefsOf<Exclude<Fields[K], undefined>, SegmentOverride, PathOf<Path, K, null>, Depth>;
|
|
19
19
|
}[keyof Fields]> : never : never;
|
|
20
|
-
type InternalFlattenedTypeDefsOfUnionChildren<T extends ValidatingUnionTypeDef, SegmentOverride extends string | null, Path extends string,
|
|
21
|
-
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren<Unions[K], SegmentOverride, Path,
|
|
20
|
+
type InternalFlattenedTypeDefsOfUnionChildren<T extends ValidatingUnionTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = T extends ValidatingUnionTypeDef<infer _E, infer _C, infer D, infer Unions> ? keyof Unions extends string ? D extends null ? UnionToIntersection<{
|
|
21
|
+
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren<Unions[K], SegmentOverride, Path, Depth>;
|
|
22
22
|
}[keyof Unions]> : UnionToIntersection<{
|
|
23
|
-
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren<Unions[K], SegmentOverride,
|
|
23
|
+
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren<Unions[K], SegmentOverride, `${Path}:${K}`, Depth>;
|
|
24
24
|
}[keyof Unions]> : never : never;
|
|
25
25
|
export {};
|
|
@@ -2,15 +2,15 @@ import { type ListTypeDef, type LiteralTypeDef, type ObjectTypeDef, type RecordT
|
|
|
2
2
|
import { type Depths, type StartingDepth } from './flattened';
|
|
3
3
|
import { type PathOf } from './path_of';
|
|
4
4
|
export type PathsOfType<T extends Type, SegmentOverride extends string | null = null, Prefix extends string = '$'> = InternalJsonPathsOf<T['definition'], Prefix, SegmentOverride, StartingDepth>;
|
|
5
|
-
export type InternalJsonPathsOf<F extends TypeDef, Prefix extends string, SegmentOverride extends string | null, Depth extends number, NextDepth extends number = Depths[Depth]> = InternalJsonPathsOfChildren<F, Prefix, SegmentOverride,
|
|
6
|
-
type InternalJsonPathsOfChildren<F extends TypeDef, Prefix extends string, SegmentOverride extends string | null,
|
|
5
|
+
export type InternalJsonPathsOf<F extends TypeDef, Prefix extends string, SegmentOverride extends string | null, Depth extends number, NextDepth extends number = Depths[Depth]> = InternalJsonPathsOfChildren<F, Prefix, SegmentOverride, NextDepth> | Prefix;
|
|
6
|
+
type InternalJsonPathsOfChildren<F extends TypeDef, Prefix extends string, SegmentOverride extends string | null, Depth extends number> = Depth extends -1 ? never : F extends LiteralTypeDef ? InternalJsonPathsOfLiteralChildren : F extends ListTypeDef ? InternalJsonPathsOfListChildren<F, Prefix, SegmentOverride, Depth> : F extends RecordTypeDef ? InternalJsonPathsOfRecordChildren<F, Prefix, SegmentOverride, Depth> : F extends ObjectTypeDef ? InternalJsonPathsOfObjectChildren<F, Prefix, SegmentOverride, Depth> : F extends UnionTypeDef ? InternalJsonPathsOfUnionChildren<F, Prefix, SegmentOverride, Depth> : never;
|
|
7
7
|
type InternalJsonPathsOfLiteralChildren = never;
|
|
8
8
|
type InternalJsonPathsOfListChildren<F extends ListTypeDef, Prefix extends string, SegmentOverride extends string | null, Depth extends number> = InternalJsonPathsOf<F['elements'], PathOf<Prefix, number, SegmentOverride>, SegmentOverride, Depth>;
|
|
9
9
|
type InternalJsonPathsOfRecordChildren<F extends RecordTypeDef, Prefix extends string, SegmentOverride extends string | null, Depth extends number> = InternalJsonPathsOf<F['valueTypeDef'], PathOf<Prefix, F['keyPrototype'], SegmentOverride>, SegmentOverride, Depth>;
|
|
10
|
-
type InternalJsonPathsOfObjectChildren<F extends ObjectTypeDef, Prefix extends string, SegmentOverride extends string | null,
|
|
11
|
-
[K in keyof Fields]: InternalJsonPathsOf<Fields[K], PathOf<Prefix,
|
|
12
|
-
}[keyof Fields] : never
|
|
13
|
-
type InternalJsonPathsOfUnionChildren<F extends UnionTypeDef, Prefix extends string, SegmentOverride extends string | null,
|
|
14
|
-
readonly [K in keyof Unions]: InternalJsonPathsOfChildren<Unions[K],
|
|
10
|
+
type InternalJsonPathsOfObjectChildren<F extends ObjectTypeDef, Prefix extends string, SegmentOverride extends string | null, Depth extends number> = F extends ObjectTypeDef<infer Fields> ? {
|
|
11
|
+
[K in keyof Fields]: InternalJsonPathsOf<Fields[K], PathOf<Prefix, K, null>, SegmentOverride, Depth>;
|
|
12
|
+
}[keyof Fields] : never;
|
|
13
|
+
type InternalJsonPathsOfUnionChildren<F extends UnionTypeDef, Prefix extends string, SegmentOverride extends string | null, Depth extends number> = F extends UnionTypeDef<infer D, infer Unions> ? keyof Unions extends string ? {
|
|
14
|
+
readonly [K in keyof Unions]: InternalJsonPathsOfChildren<Unions[K], D extends null ? Prefix : `${Prefix}:${K}`, SegmentOverride, Depth>;
|
|
15
15
|
}[keyof Unions] : never : never;
|
|
16
16
|
export {};
|
|
@@ -6,17 +6,17 @@ import { type StrictType } from './strict_definitions';
|
|
|
6
6
|
export type ValueToTypePathsOfType<T extends StrictType, SegmentOverride extends string = '*', Path extends string = '$'> = SimplifyDeep<InternalFlattenedTypePathsOf<T['definition'], SegmentOverride, Path, Path, StartingDepth>>;
|
|
7
7
|
type InternalFlattenedTypePathsOf<T extends TypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string, Depth extends number> = {
|
|
8
8
|
readonly [K in ValuePath]: TypePath;
|
|
9
|
-
} & InternalFlattenedTypePathsOfChildren<T, SegmentOverride, ValuePath, TypePath,
|
|
10
|
-
type InternalFlattenedTypePathsOfChildren<T extends TypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string,
|
|
9
|
+
} & InternalFlattenedTypePathsOfChildren<T, SegmentOverride, ValuePath, TypePath, Depth>;
|
|
10
|
+
type InternalFlattenedTypePathsOfChildren<T extends TypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string, Depth extends number, NextDepth extends number = Depths[Depth]> = NextDepth extends -1 ? never : T extends LiteralTypeDef ? InternalFlattenedTypePathsOfLiteralChildren : T extends ListTypeDef ? InternalFlattenedTypePathsOfListChildren<T, SegmentOverride, ValuePath, TypePath, NextDepth> : T extends RecordTypeDef ? InternalFlattenedTypePathsOfRecordChildren<T, SegmentOverride, ValuePath, TypePath, NextDepth> : T extends ObjectTypeDef ? InternalFlattenedTypePathsOfObjectChildren<T, SegmentOverride, ValuePath, TypePath, NextDepth> : T extends UnionTypeDef ? InternalFlattenedTypePathsOfUnionChildren<T, SegmentOverride, ValuePath, TypePath, NextDepth> : never;
|
|
11
11
|
type InternalFlattenedTypePathsOfLiteralChildren = {};
|
|
12
12
|
type InternalFlattenedTypePathsOfListChildren<T extends ListTypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string, Depth extends number> = InternalFlattenedTypePathsOf<T['elements'], SegmentOverride, PathOf<ValuePath, number>, PathOf<TypePath, number, SegmentOverride>, Depth>;
|
|
13
13
|
type InternalFlattenedTypePathsOfRecordChildren<T extends RecordTypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string, Depth extends number> = InternalFlattenedTypePathsOf<T['valueTypeDef'], SegmentOverride, PathOf<ValuePath, T['keyPrototype']>, PathOf<TypePath, T['keyPrototype'], SegmentOverride>, Depth>;
|
|
14
|
-
type InternalFlattenedTypePathsOfObjectChildren<T extends ObjectTypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string,
|
|
15
|
-
readonly [K in keyof Fields]-?: InternalFlattenedTypePathsOf<Exclude<Fields[K], undefined>, SegmentOverride, PathOf<ValuePath,
|
|
14
|
+
type InternalFlattenedTypePathsOfObjectChildren<T extends ObjectTypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string, Depth extends number> = T extends ObjectTypeDef<infer Fields> ? keyof Fields extends string ? UnionToIntersection<{
|
|
15
|
+
readonly [K in keyof Fields]-?: InternalFlattenedTypePathsOf<Exclude<Fields[K], undefined>, SegmentOverride, PathOf<ValuePath, K>, PathOf<TypePath, K>, Depth>;
|
|
16
16
|
}[keyof Fields]> : never : never;
|
|
17
|
-
type InternalFlattenedTypePathsOfUnionChildren<T extends UnionTypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string,
|
|
18
|
-
readonly [K in keyof Unions]: InternalFlattenedTypePathsOfChildren<Unions[K], SegmentOverride, ValuePath, TypePath,
|
|
17
|
+
type InternalFlattenedTypePathsOfUnionChildren<T extends UnionTypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string, Depth extends number> = T extends UnionTypeDef<infer D, infer Unions> ? keyof Unions extends string ? D extends null ? UnionToIntersection<{
|
|
18
|
+
readonly [K in keyof Unions]: InternalFlattenedTypePathsOfChildren<Unions[K], SegmentOverride, ValuePath, TypePath, Depth>;
|
|
19
19
|
}[keyof Unions]> : UnionToIntersection<{
|
|
20
|
-
readonly [K in keyof Unions]: InternalFlattenedTypePathsOfChildren<Unions[K], SegmentOverride, ValuePath
|
|
20
|
+
readonly [K in keyof Unions]: InternalFlattenedTypePathsOfChildren<Unions[K], SegmentOverride, `${ValuePath}:${K}`, `${TypePath}:${K}`, Depth>;
|
|
21
21
|
}[keyof Unions]> : never : never;
|
|
22
22
|
export {};
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -7,12 +7,12 @@ $ tsup
|
|
|
7
7
|
[34mCLI[39m Target: es6
|
|
8
8
|
[34mCJS[39m Build start
|
|
9
9
|
[34mESM[39m Build start
|
|
10
|
-
[32mCJS[39m [1mdist/index.cjs [22m[32m33.
|
|
11
|
-
[32mCJS[39m ⚡️ Build success in
|
|
12
|
-
[32mESM[39m [1mdist/index.js [22m[32m30.
|
|
13
|
-
[32mESM[39m ⚡️ Build success in
|
|
10
|
+
[32mCJS[39m [1mdist/index.cjs [22m[32m33.26 KB[39m
|
|
11
|
+
[32mCJS[39m ⚡️ Build success in 95ms
|
|
12
|
+
[32mESM[39m [1mdist/index.js [22m[32m30.67 KB[39m
|
|
13
|
+
[32mESM[39m ⚡️ Build success in 97ms
|
|
14
14
|
[34mDTS[39m Build start
|
|
15
|
-
[32mDTS[39m ⚡️ Build success in
|
|
16
|
-
[32mDTS[39m [1mdist/index.d.cts [22m[
|
|
17
|
-
[32mDTS[39m [1mdist/index.d.ts [22m[
|
|
18
|
-
Done in
|
|
15
|
+
[32mDTS[39m ⚡️ Build success in 11914ms
|
|
16
|
+
[32mDTS[39m [1mdist/index.d.cts [22m[32m41.51 KB[39m
|
|
17
|
+
[32mDTS[39m [1mdist/index.d.ts [22m[32m41.51 KB[39m
|
|
18
|
+
Done in 13.11s.
|
package/dist/index.cjs
CHANGED
|
@@ -234,8 +234,8 @@ var import_base3 = require("@strictly/base");
|
|
|
234
234
|
// transformers/flatteners/json_path.ts
|
|
235
235
|
var import_base2 = require("@strictly/base");
|
|
236
236
|
function jsonPath(prefix, segment, qualifier) {
|
|
237
|
-
const s = `.${
|
|
238
|
-
return `${prefix}${s}`;
|
|
237
|
+
const s = `.${segment}`;
|
|
238
|
+
return `${prefix}${qualifier != null ? qualifier : ""}${s}`;
|
|
239
239
|
}
|
|
240
240
|
function jsonPathPop(path) {
|
|
241
241
|
const parts = path.split(".");
|
|
@@ -273,11 +273,11 @@ function flattenValueTo({ definition }, v, setter, mapper2) {
|
|
|
273
273
|
function internalFlattenValue(valuePath, typePath, typeDef, v, setter, mapper2, r) {
|
|
274
274
|
r[valuePath] = mapper2(typeDef, v, setter, typePath, valuePath);
|
|
275
275
|
if (v !== void 0) {
|
|
276
|
-
return internalFlattenValueChildren(valuePath, typePath,
|
|
276
|
+
return internalFlattenValueChildren(valuePath, typePath, typeDef, v, mapper2, r);
|
|
277
277
|
}
|
|
278
278
|
return r;
|
|
279
279
|
}
|
|
280
|
-
function internalFlattenValueChildren(valuePath, typePath,
|
|
280
|
+
function internalFlattenValueChildren(valuePath, typePath, typeDef, v, mapper2, r) {
|
|
281
281
|
switch (typeDef.type) {
|
|
282
282
|
case 1 /* Literal */:
|
|
283
283
|
return r;
|
|
@@ -286,9 +286,9 @@ function internalFlattenValueChildren(valuePath, typePath, qualifier, typeDef, v
|
|
|
286
286
|
case 3 /* Record */:
|
|
287
287
|
return internalFlattenRecordChildren(valuePath, typePath, typeDef, v, mapper2, r);
|
|
288
288
|
case 4 /* Object */:
|
|
289
|
-
return internalFlattenObjectChildren(valuePath, typePath,
|
|
289
|
+
return internalFlattenObjectChildren(valuePath, typePath, typeDef, v, mapper2, r);
|
|
290
290
|
case 5 /* Union */:
|
|
291
|
-
return internalFlattenUnionChildren(valuePath, typePath,
|
|
291
|
+
return internalFlattenUnionChildren(valuePath, typePath, typeDef, v, mapper2, r);
|
|
292
292
|
default:
|
|
293
293
|
throw new import_base3.UnreachableError(typeDef);
|
|
294
294
|
}
|
|
@@ -329,14 +329,14 @@ function internalFlattenRecordChildren(valuePath, typePath, { valueTypeDef }, v,
|
|
|
329
329
|
r
|
|
330
330
|
);
|
|
331
331
|
}
|
|
332
|
-
function internalFlattenObjectChildren(valuePath, typePath,
|
|
332
|
+
function internalFlattenObjectChildren(valuePath, typePath, { fields }, v, mapper2, r) {
|
|
333
333
|
return (0, import_base3.reduce)(
|
|
334
334
|
fields,
|
|
335
335
|
function(r2, k, fieldTypeDef) {
|
|
336
336
|
const fieldValue = v[k];
|
|
337
337
|
return internalFlattenValue(
|
|
338
|
-
jsonPath(valuePath, k
|
|
339
|
-
jsonPath(typePath, k
|
|
338
|
+
jsonPath(valuePath, k),
|
|
339
|
+
jsonPath(typePath, k),
|
|
340
340
|
fieldTypeDef,
|
|
341
341
|
fieldValue,
|
|
342
342
|
(value) => {
|
|
@@ -349,13 +349,12 @@ function internalFlattenObjectChildren(valuePath, typePath, qualifier, { fields
|
|
|
349
349
|
r
|
|
350
350
|
);
|
|
351
351
|
}
|
|
352
|
-
function internalFlattenUnionChildren(valuePath, typePath,
|
|
352
|
+
function internalFlattenUnionChildren(valuePath, typePath, typeDef, v, mapper2, r) {
|
|
353
353
|
const childTypeDef = getUnionTypeDef(typeDef, v);
|
|
354
|
-
const
|
|
354
|
+
const qualifier = typeDef.discriminator != null ? `:${v[typeDef.discriminator]}` : "";
|
|
355
355
|
return internalFlattenValueChildren(
|
|
356
|
-
valuePath
|
|
357
|
-
typePath
|
|
358
|
-
newQualifier,
|
|
356
|
+
`${valuePath}${qualifier}`,
|
|
357
|
+
`${typePath}${qualifier}`,
|
|
359
358
|
childTypeDef,
|
|
360
359
|
v,
|
|
361
360
|
mapper2,
|
|
@@ -519,8 +518,8 @@ function internalFlattenUnionTypeDefChildren(path, qualifier, {
|
|
|
519
518
|
unions,
|
|
520
519
|
function(acc, key, typeDef) {
|
|
521
520
|
return internalFlattenTypeDefChildren(
|
|
522
|
-
path,
|
|
523
|
-
|
|
521
|
+
discriminator != null ? `${path}:${qualifier}` : path,
|
|
522
|
+
key,
|
|
524
523
|
typeDef,
|
|
525
524
|
acc
|
|
526
525
|
);
|
|
@@ -578,25 +577,36 @@ function flattenValuesOfType(typeDef, value) {
|
|
|
578
577
|
var import_base6 = require("@strictly/base");
|
|
579
578
|
function valuePathToTypePath({ definition: typeDef }, valuePath, allowMissingPaths = false) {
|
|
580
579
|
const valueSteps = valuePath.split(/\.|\[/g);
|
|
581
|
-
|
|
580
|
+
const parts = valueSteps[0].split(":");
|
|
581
|
+
const [
|
|
582
|
+
first,
|
|
583
|
+
...qualifiers
|
|
584
|
+
] = parts;
|
|
585
|
+
(0, import_base6.assertEqual)(first, "$");
|
|
582
586
|
const typeSteps = internalJsonValuePathToTypePath(
|
|
583
587
|
typeDef,
|
|
588
|
+
qualifiers,
|
|
584
589
|
valueSteps.slice(1),
|
|
585
590
|
allowMissingPaths,
|
|
586
591
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
587
592
|
valuePath
|
|
588
593
|
);
|
|
589
|
-
typeSteps.unshift(
|
|
594
|
+
typeSteps.unshift(valueSteps[0]);
|
|
590
595
|
return typeSteps.join(".");
|
|
591
596
|
}
|
|
592
|
-
function internalJsonValuePathToTypePath(typeDef, valueSteps, allowMissingPaths, originalValuePath) {
|
|
597
|
+
function internalJsonValuePathToTypePath(typeDef, qualifiers, valueSteps, allowMissingPaths, originalValuePath) {
|
|
593
598
|
if (valueSteps.length === 0) {
|
|
594
599
|
return [];
|
|
595
600
|
}
|
|
596
601
|
const [
|
|
597
|
-
|
|
602
|
+
nextValueStepAndQualifiersString,
|
|
598
603
|
...remainingValueSteps
|
|
599
604
|
] = valueSteps;
|
|
605
|
+
const nextValueStepAndQualifiers = nextValueStepAndQualifiersString.split(":");
|
|
606
|
+
const [
|
|
607
|
+
valueStep,
|
|
608
|
+
...nextQualifiers
|
|
609
|
+
] = nextValueStepAndQualifiers;
|
|
600
610
|
switch (typeDef.type) {
|
|
601
611
|
case 1 /* Literal */:
|
|
602
612
|
if (allowMissingPaths) {
|
|
@@ -605,14 +615,18 @@ function internalJsonValuePathToTypePath(typeDef, valueSteps, allowMissingPaths,
|
|
|
605
615
|
throw new import_base6.PreconditionFailedError(
|
|
606
616
|
"literal should terminate path {} ({})",
|
|
607
617
|
originalValuePath,
|
|
608
|
-
|
|
618
|
+
nextValueStepAndQualifiersString
|
|
609
619
|
);
|
|
610
620
|
}
|
|
611
621
|
case 2 /* List */:
|
|
612
622
|
return [
|
|
613
|
-
|
|
623
|
+
[
|
|
624
|
+
"*",
|
|
625
|
+
...nextQualifiers
|
|
626
|
+
].join(":"),
|
|
614
627
|
...internalJsonValuePathToTypePath(
|
|
615
628
|
typeDef.elements,
|
|
629
|
+
nextQualifiers,
|
|
616
630
|
remainingValueSteps,
|
|
617
631
|
allowMissingPaths,
|
|
618
632
|
originalValuePath
|
|
@@ -620,9 +634,13 @@ function internalJsonValuePathToTypePath(typeDef, valueSteps, allowMissingPaths,
|
|
|
620
634
|
];
|
|
621
635
|
case 3 /* Record */:
|
|
622
636
|
return [
|
|
623
|
-
|
|
637
|
+
[
|
|
638
|
+
"*",
|
|
639
|
+
...nextQualifiers
|
|
640
|
+
].join(":"),
|
|
624
641
|
...internalJsonValuePathToTypePath(
|
|
625
642
|
typeDef.valueTypeDef,
|
|
643
|
+
nextQualifiers,
|
|
626
644
|
remainingValueSteps,
|
|
627
645
|
allowMissingPaths,
|
|
628
646
|
originalValuePath
|
|
@@ -637,9 +655,10 @@ function internalJsonValuePathToTypePath(typeDef, valueSteps, allowMissingPaths,
|
|
|
637
655
|
(0, import_base6.assertExists)(typeDef.fields[valueStep], "missing field in {} ({})", originalValuePath, valueStep);
|
|
638
656
|
}
|
|
639
657
|
return [
|
|
640
|
-
|
|
658
|
+
nextValueStepAndQualifiersString,
|
|
641
659
|
...internalJsonValuePathToTypePath(
|
|
642
660
|
typeDef.fields[valueStep],
|
|
661
|
+
nextQualifiers,
|
|
643
662
|
remainingValueSteps,
|
|
644
663
|
allowMissingPaths,
|
|
645
664
|
originalValuePath
|
|
@@ -661,6 +680,7 @@ function internalJsonValuePathToTypePath(typeDef, valueSteps, allowMissingPaths,
|
|
|
661
680
|
(0, import_base6.assertExists)(union2, "expected a complex union {}", originalValuePath);
|
|
662
681
|
return internalJsonValuePathToTypePath(
|
|
663
682
|
union2,
|
|
683
|
+
nextQualifiers,
|
|
664
684
|
valueSteps,
|
|
665
685
|
allowMissingPaths,
|
|
666
686
|
originalValuePath
|
|
@@ -669,8 +689,7 @@ function internalJsonValuePathToTypePath(typeDef, valueSteps, allowMissingPaths,
|
|
|
669
689
|
return [];
|
|
670
690
|
}
|
|
671
691
|
} else {
|
|
672
|
-
|
|
673
|
-
if (qualifierIndex < 0) {
|
|
692
|
+
if (qualifiers.length === 0) {
|
|
674
693
|
if (allowMissingPaths) {
|
|
675
694
|
return valueSteps;
|
|
676
695
|
} else {
|
|
@@ -681,25 +700,18 @@ function internalJsonValuePathToTypePath(typeDef, valueSteps, allowMissingPaths,
|
|
|
681
700
|
);
|
|
682
701
|
}
|
|
683
702
|
}
|
|
684
|
-
const qualifier = valueStep.substring(0, qualifierIndex);
|
|
685
|
-
const remainder = valueStep.substring(qualifierIndex + 1);
|
|
686
|
-
const union2 = (0, import_base6.assertExistsAndReturn)(typeDef.unions[qualifier], "missing union {}", qualifier);
|
|
687
703
|
const [
|
|
688
|
-
|
|
689
|
-
...
|
|
690
|
-
] =
|
|
704
|
+
qualifier,
|
|
705
|
+
...remainingQualifiers
|
|
706
|
+
] = qualifiers;
|
|
707
|
+
const union2 = (0, import_base6.assertExistsAndReturn)(typeDef.unions[qualifier], "missing union {}", qualifier);
|
|
708
|
+
return internalJsonValuePathToTypePath(
|
|
691
709
|
union2,
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
...remainingValueSteps
|
|
695
|
-
],
|
|
710
|
+
remainingQualifiers,
|
|
711
|
+
valueSteps,
|
|
696
712
|
allowMissingPaths,
|
|
697
713
|
originalValuePath
|
|
698
714
|
);
|
|
699
|
-
return [
|
|
700
|
-
`${qualifier}:${typeStep}`,
|
|
701
|
-
...remainingTypeSteps
|
|
702
|
-
];
|
|
703
715
|
}
|
|
704
716
|
default:
|
|
705
717
|
throw new import_base6.UnreachableError(typeDef);
|
package/dist/index.d.cts
CHANGED
|
@@ -152,24 +152,24 @@ type Depths = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
|
|
|
152
152
|
|
|
153
153
|
type PathOf<Prefix extends string, Accessor extends string | number | symbol, SegmentOverride extends string | null = null> = SegmentOverride extends string ? `${Prefix}.${SegmentOverride}` : Accessor extends string | number ? `${Prefix}.${Accessor}` : never;
|
|
154
154
|
|
|
155
|
-
type FlattenedTypesOfType<T extends Type, SegmentOverride extends string | null, Path extends string = '$', Depth extends number = StartingDepth> = InternalFlattenedTypeDefsOf$1<T['definition'], SegmentOverride, Path,
|
|
156
|
-
type InternalFlattenedTypeDefsOf$1<T extends TypeDef, SegmentOverride extends string | null, Path extends string,
|
|
155
|
+
type FlattenedTypesOfType<T extends Type, SegmentOverride extends string | null, Path extends string = '$', Depth extends number = StartingDepth> = InternalFlattenedTypeDefsOf$1<T['definition'], SegmentOverride, Path, Depth>;
|
|
156
|
+
type InternalFlattenedTypeDefsOf$1<T extends TypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = {
|
|
157
157
|
readonly [K in Path]: Type<T>;
|
|
158
|
-
} & InternalFlattenedTypeDefsOfChildren$1<T, SegmentOverride, Path,
|
|
159
|
-
type InternalFlattenedTypeDefsOfChildren$1<T extends TypeDef, SegmentOverride extends string | null, Path extends string,
|
|
158
|
+
} & InternalFlattenedTypeDefsOfChildren$1<T, SegmentOverride, Path, Depth>;
|
|
159
|
+
type InternalFlattenedTypeDefsOfChildren$1<T extends TypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number, NextDepth extends number = Depths[Depth]> = NextDepth extends -1 ? never : T extends LiteralTypeDef ? InternalFlattenedTypeDefsOfLiteralChildren$1 : T extends ListTypeDef ? InternalFlattenedTypeDefsOfListChildren$1<T, SegmentOverride, Path, NextDepth> : T extends RecordTypeDef ? InternalFlattenedTypeDefsOfRecordChildren$1<T, SegmentOverride, Path, NextDepth> : T extends ObjectTypeDef ? InternalFlattenedTypeDefsOfObjectChildren$1<T, SegmentOverride, Path, NextDepth> : T extends UnionTypeDef ? InternalFlattenedTypeDefsOfUnionChildren$1<T, SegmentOverride, Path, NextDepth> : never;
|
|
160
160
|
type InternalFlattenedTypeDefsOfLiteralChildren$1 = {};
|
|
161
|
-
type InternalFlattenedTypeDefsOfListChildren$1<T extends ListTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf$1<T['elements'], SegmentOverride, PathOf<Path, number, SegmentOverride>,
|
|
162
|
-
type InternalFlattenedTypeDefsOfRecordChildren$1<T extends RecordTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf$1<T['valueTypeDef'], SegmentOverride, PathOf<Path, T['keyPrototype'], SegmentOverride>,
|
|
163
|
-
type InternalFlattenedTypeDefsOfObjectChildren$1<T extends ObjectTypeDef, SegmentOverride extends string | null, Path extends string,
|
|
161
|
+
type InternalFlattenedTypeDefsOfListChildren$1<T extends ListTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf$1<T['elements'], SegmentOverride, PathOf<Path, number, SegmentOverride>, Depth>;
|
|
162
|
+
type InternalFlattenedTypeDefsOfRecordChildren$1<T extends RecordTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf$1<T['valueTypeDef'], SegmentOverride, PathOf<Path, T['keyPrototype'], SegmentOverride>, Depth>;
|
|
163
|
+
type InternalFlattenedTypeDefsOfObjectChildren$1<T extends ObjectTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = T extends ObjectTypeDef<infer Fields> ? keyof Fields extends string ? UnionToIntersection<{
|
|
164
164
|
readonly [K in keyof Fields]-?: undefined extends Fields[K] ? InternalFlattenedTypeDefsOf$1<UnionTypeDef<null, {
|
|
165
165
|
readonly '0': Exclude<Fields[K], undefined>;
|
|
166
166
|
readonly '1': LiteralTypeDef<undefined>;
|
|
167
|
-
}>, SegmentOverride, PathOf<Path,
|
|
167
|
+
}>, SegmentOverride, PathOf<Path, K, null>, Depth> : InternalFlattenedTypeDefsOf$1<Exclude<Fields[K], undefined>, SegmentOverride, PathOf<Path, K, null>, Depth>;
|
|
168
168
|
}[keyof Fields]> : never : never;
|
|
169
|
-
type InternalFlattenedTypeDefsOfUnionChildren$1<T extends UnionTypeDef, SegmentOverride extends string | null, Path extends string,
|
|
170
|
-
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren$1<Unions[K], SegmentOverride, Path,
|
|
169
|
+
type InternalFlattenedTypeDefsOfUnionChildren$1<T extends UnionTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = T extends UnionTypeDef<infer D, infer Unions> ? keyof Unions extends string ? D extends null ? UnionToIntersection<{
|
|
170
|
+
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren$1<Unions[K], SegmentOverride, Path, Depth>;
|
|
171
171
|
}[keyof Unions]> : UnionToIntersection<{
|
|
172
|
-
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren$1<Unions[K], SegmentOverride,
|
|
172
|
+
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren$1<Unions[K], SegmentOverride, `${Path}:${K}`, Depth>;
|
|
173
173
|
}[keyof Unions]> : never : never;
|
|
174
174
|
|
|
175
175
|
type FlattenedValuesOfType<T extends Type, SegmentOverride extends string | null = null, Flattened extends Readonly<Record<string, Type>> = FlattenedTypesOfType<T, SegmentOverride>> = {
|
|
@@ -271,24 +271,24 @@ type ValidatingUnionTypeDef<E = any, C = any, D extends string | null = string |
|
|
|
271
271
|
readonly readonly: boolean;
|
|
272
272
|
};
|
|
273
273
|
|
|
274
|
-
type FlattenedTypesOfValidatingType<T extends Type, SegmentOverride extends string | null, Path extends string = '$', Depth extends number = StartingDepth> = InternalFlattenedTypeDefsOf<T['definition'], SegmentOverride, Path,
|
|
275
|
-
type InternalFlattenedTypeDefsOf<T extends TypeDef, SegmentOverride extends string | null, Path extends string,
|
|
274
|
+
type FlattenedTypesOfValidatingType<T extends Type, SegmentOverride extends string | null, Path extends string = '$', Depth extends number = StartingDepth> = InternalFlattenedTypeDefsOf<T['definition'], SegmentOverride, Path, Depth>;
|
|
275
|
+
type InternalFlattenedTypeDefsOf<T extends TypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = {
|
|
276
276
|
readonly [K in Path]: Type<T>;
|
|
277
|
-
} & InternalFlattenedTypeDefsOfChildren<T, SegmentOverride, Path,
|
|
278
|
-
type InternalFlattenedTypeDefsOfChildren<T extends TypeDef, SegmentOverride extends string | null, Path extends string,
|
|
277
|
+
} & InternalFlattenedTypeDefsOfChildren<T, SegmentOverride, Path, Depth>;
|
|
278
|
+
type InternalFlattenedTypeDefsOfChildren<T extends TypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number, NextDepth extends number = Depths[Depth]> = NextDepth extends -1 ? never : T extends ValidatingLiteralTypeDef ? InternalFlattenedTypeDefsOfLiteralChildren : T extends ValidatingListTypeDef ? InternalFlattenedTypeDefsOfListChildren<T, SegmentOverride, Path, NextDepth> : T extends ValidatingRecordTypeDef ? InternalFlattenedTypeDefsOfRecordChildren<T, SegmentOverride, Path, NextDepth> : T extends ValidatingObjectTypeDef ? InternalFlattenedTypeDefsOfObjectChildren<T, SegmentOverride, Path, NextDepth> : T extends ValidatingUnionTypeDef ? InternalFlattenedTypeDefsOfUnionChildren<T, SegmentOverride, Path, NextDepth> : never;
|
|
279
279
|
type InternalFlattenedTypeDefsOfLiteralChildren = {};
|
|
280
|
-
type InternalFlattenedTypeDefsOfListChildren<T extends ValidatingListTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf<T['elements'], SegmentOverride, PathOf<Path, number, SegmentOverride>,
|
|
281
|
-
type InternalFlattenedTypeDefsOfRecordChildren<T extends ValidatingRecordTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf<T['valueTypeDef'], SegmentOverride, PathOf<Path, T['keyPrototype'], SegmentOverride>,
|
|
282
|
-
type InternalFlattenedTypeDefsOfObjectChildren<T extends ValidatingObjectTypeDef, SegmentOverride extends string | null, Path extends string,
|
|
280
|
+
type InternalFlattenedTypeDefsOfListChildren<T extends ValidatingListTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf<T['elements'], SegmentOverride, PathOf<Path, number, SegmentOverride>, Depth>;
|
|
281
|
+
type InternalFlattenedTypeDefsOfRecordChildren<T extends ValidatingRecordTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf<T['valueTypeDef'], SegmentOverride, PathOf<Path, T['keyPrototype'], SegmentOverride>, Depth>;
|
|
282
|
+
type InternalFlattenedTypeDefsOfObjectChildren<T extends ValidatingObjectTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = T extends ValidatingObjectTypeDef<infer _E, infer _C, infer Fields> ? keyof Fields extends string ? UnionToIntersection<{
|
|
283
283
|
readonly [K in keyof Fields]-?: undefined extends Fields[K] ? InternalFlattenedTypeDefsOf<ValidatingUnionTypeDef<ErrorOfValidatingTypeDef<Exclude<Fields[K], undefined>>, ContextOfValidatingTypeDef<Exclude<Fields[K], undefined>>, null, {
|
|
284
284
|
readonly '0': Exclude<Fields[K], undefined>;
|
|
285
285
|
readonly '1': ValidatingLiteralTypeDef<undefined>;
|
|
286
|
-
}>, SegmentOverride, PathOf<Path,
|
|
286
|
+
}>, SegmentOverride, PathOf<Path, K, null>, Depth> : InternalFlattenedTypeDefsOf<Exclude<Fields[K], undefined>, SegmentOverride, PathOf<Path, K, null>, Depth>;
|
|
287
287
|
}[keyof Fields]> : never : never;
|
|
288
|
-
type InternalFlattenedTypeDefsOfUnionChildren<T extends ValidatingUnionTypeDef, SegmentOverride extends string | null, Path extends string,
|
|
289
|
-
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren<Unions[K], SegmentOverride, Path,
|
|
288
|
+
type InternalFlattenedTypeDefsOfUnionChildren<T extends ValidatingUnionTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = T extends ValidatingUnionTypeDef<infer _E, infer _C, infer D, infer Unions> ? keyof Unions extends string ? D extends null ? UnionToIntersection<{
|
|
289
|
+
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren<Unions[K], SegmentOverride, Path, Depth>;
|
|
290
290
|
}[keyof Unions]> : UnionToIntersection<{
|
|
291
|
-
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren<Unions[K], SegmentOverride,
|
|
291
|
+
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren<Unions[K], SegmentOverride, `${Path}:${K}`, Depth>;
|
|
292
292
|
}[keyof Unions]> : never : never;
|
|
293
293
|
|
|
294
294
|
type ValidatorOfValidatingType<T extends ValidatingTypeDef, ValuePath extends string> = T extends ValidatingTypeDef<infer E, infer C> ? Validator<ValueOfTypeDef<ReadonlyOfTypeDef<T>>, E, ValuePath, C> : never;
|
|
@@ -301,7 +301,7 @@ declare function flattenValidatorsOfValidatingType<T extends ValidatingType, Typ
|
|
|
301
301
|
declare function flattenValuesOfType<T extends Type>(typeDef: Type, value: ValueOfType<T>): Record<string, any>;
|
|
302
302
|
|
|
303
303
|
declare function jsonPath<Prefix extends string, Segment extends number | string>(prefix: Prefix, segment: Segment): `${Prefix}.${Segment}`;
|
|
304
|
-
declare function jsonPath<Prefix extends string, Segment extends number | string, Qualifier extends string>(prefix: Prefix, segment: Segment, qualifier: Qualifier): `${Prefix}
|
|
304
|
+
declare function jsonPath<Prefix extends string, Segment extends number | string, Qualifier extends string>(prefix: Prefix, segment: Segment, qualifier: Qualifier): `${Prefix}${Qualifier}.${Segment}`;
|
|
305
305
|
declare function jsonPathPop<Path extends string>(path: Path): [string, string] | null;
|
|
306
306
|
declare function jsonPathPrefix<Prefix extends string, Path extends string>(prefix: Prefix, path: Path): Path extends StringConcatOf<'$', infer ToMount> ? `${Prefix}${ToMount}` : never;
|
|
307
307
|
declare function jsonPathUnprefix<Prefix extends string, Path extends string>(prefix: Prefix, path: Path): Path extends StringConcatOf<Prefix, infer ToUnmount> ? `$${ToUnmount}` : never;
|
|
@@ -489,33 +489,33 @@ declare function union<D extends null>(): UnionTypeDefBuilder<never, {}, D, {}>;
|
|
|
489
489
|
declare function union<D extends string>(discriminator: D): UnionTypeDefBuilder<never, {}, D, {}>;
|
|
490
490
|
|
|
491
491
|
type PathsOfType<T extends Type, SegmentOverride extends string | null = null, Prefix extends string = '$'> = InternalJsonPathsOf<T['definition'], Prefix, SegmentOverride, StartingDepth>;
|
|
492
|
-
type InternalJsonPathsOf<F extends TypeDef, Prefix extends string, SegmentOverride extends string | null, Depth extends number, NextDepth extends number = Depths[Depth]> = InternalJsonPathsOfChildren<F, Prefix, SegmentOverride,
|
|
493
|
-
type InternalJsonPathsOfChildren<F extends TypeDef, Prefix extends string, SegmentOverride extends string | null,
|
|
492
|
+
type InternalJsonPathsOf<F extends TypeDef, Prefix extends string, SegmentOverride extends string | null, Depth extends number, NextDepth extends number = Depths[Depth]> = InternalJsonPathsOfChildren<F, Prefix, SegmentOverride, NextDepth> | Prefix;
|
|
493
|
+
type InternalJsonPathsOfChildren<F extends TypeDef, Prefix extends string, SegmentOverride extends string | null, Depth extends number> = Depth extends -1 ? never : F extends LiteralTypeDef ? InternalJsonPathsOfLiteralChildren : F extends ListTypeDef ? InternalJsonPathsOfListChildren<F, Prefix, SegmentOverride, Depth> : F extends RecordTypeDef ? InternalJsonPathsOfRecordChildren<F, Prefix, SegmentOverride, Depth> : F extends ObjectTypeDef ? InternalJsonPathsOfObjectChildren<F, Prefix, SegmentOverride, Depth> : F extends UnionTypeDef ? InternalJsonPathsOfUnionChildren<F, Prefix, SegmentOverride, Depth> : never;
|
|
494
494
|
type InternalJsonPathsOfLiteralChildren = never;
|
|
495
495
|
type InternalJsonPathsOfListChildren<F extends ListTypeDef, Prefix extends string, SegmentOverride extends string | null, Depth extends number> = InternalJsonPathsOf<F['elements'], PathOf<Prefix, number, SegmentOverride>, SegmentOverride, Depth>;
|
|
496
496
|
type InternalJsonPathsOfRecordChildren<F extends RecordTypeDef, Prefix extends string, SegmentOverride extends string | null, Depth extends number> = InternalJsonPathsOf<F['valueTypeDef'], PathOf<Prefix, F['keyPrototype'], SegmentOverride>, SegmentOverride, Depth>;
|
|
497
|
-
type InternalJsonPathsOfObjectChildren<F extends ObjectTypeDef, Prefix extends string, SegmentOverride extends string | null,
|
|
498
|
-
[K in keyof Fields]: InternalJsonPathsOf<Fields[K], PathOf<Prefix,
|
|
499
|
-
}[keyof Fields] : never
|
|
500
|
-
type InternalJsonPathsOfUnionChildren<F extends UnionTypeDef, Prefix extends string, SegmentOverride extends string | null,
|
|
501
|
-
readonly [K in keyof Unions]: InternalJsonPathsOfChildren<Unions[K],
|
|
497
|
+
type InternalJsonPathsOfObjectChildren<F extends ObjectTypeDef, Prefix extends string, SegmentOverride extends string | null, Depth extends number> = F extends ObjectTypeDef<infer Fields> ? {
|
|
498
|
+
[K in keyof Fields]: InternalJsonPathsOf<Fields[K], PathOf<Prefix, K, null>, SegmentOverride, Depth>;
|
|
499
|
+
}[keyof Fields] : never;
|
|
500
|
+
type InternalJsonPathsOfUnionChildren<F extends UnionTypeDef, Prefix extends string, SegmentOverride extends string | null, Depth extends number> = F extends UnionTypeDef<infer D, infer Unions> ? keyof Unions extends string ? {
|
|
501
|
+
readonly [K in keyof Unions]: InternalJsonPathsOfChildren<Unions[K], D extends null ? Prefix : `${Prefix}:${K}`, SegmentOverride, Depth>;
|
|
502
502
|
}[keyof Unions] : never : never;
|
|
503
503
|
|
|
504
504
|
type ValueToTypePathsOfType<T extends StrictType, SegmentOverride extends string = '*', Path extends string = '$'> = SimplifyDeep<InternalFlattenedTypePathsOf<T['definition'], SegmentOverride, Path, Path, StartingDepth>>;
|
|
505
505
|
type InternalFlattenedTypePathsOf<T extends TypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string, Depth extends number> = {
|
|
506
506
|
readonly [K in ValuePath]: TypePath;
|
|
507
|
-
} & InternalFlattenedTypePathsOfChildren<T, SegmentOverride, ValuePath, TypePath,
|
|
508
|
-
type InternalFlattenedTypePathsOfChildren<T extends TypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string,
|
|
507
|
+
} & InternalFlattenedTypePathsOfChildren<T, SegmentOverride, ValuePath, TypePath, Depth>;
|
|
508
|
+
type InternalFlattenedTypePathsOfChildren<T extends TypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string, Depth extends number, NextDepth extends number = Depths[Depth]> = NextDepth extends -1 ? never : T extends LiteralTypeDef ? InternalFlattenedTypePathsOfLiteralChildren : T extends ListTypeDef ? InternalFlattenedTypePathsOfListChildren<T, SegmentOverride, ValuePath, TypePath, NextDepth> : T extends RecordTypeDef ? InternalFlattenedTypePathsOfRecordChildren<T, SegmentOverride, ValuePath, TypePath, NextDepth> : T extends ObjectTypeDef ? InternalFlattenedTypePathsOfObjectChildren<T, SegmentOverride, ValuePath, TypePath, NextDepth> : T extends UnionTypeDef ? InternalFlattenedTypePathsOfUnionChildren<T, SegmentOverride, ValuePath, TypePath, NextDepth> : never;
|
|
509
509
|
type InternalFlattenedTypePathsOfLiteralChildren = {};
|
|
510
510
|
type InternalFlattenedTypePathsOfListChildren<T extends ListTypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string, Depth extends number> = InternalFlattenedTypePathsOf<T['elements'], SegmentOverride, PathOf<ValuePath, number>, PathOf<TypePath, number, SegmentOverride>, Depth>;
|
|
511
511
|
type InternalFlattenedTypePathsOfRecordChildren<T extends RecordTypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string, Depth extends number> = InternalFlattenedTypePathsOf<T['valueTypeDef'], SegmentOverride, PathOf<ValuePath, T['keyPrototype']>, PathOf<TypePath, T['keyPrototype'], SegmentOverride>, Depth>;
|
|
512
|
-
type InternalFlattenedTypePathsOfObjectChildren<T extends ObjectTypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string,
|
|
513
|
-
readonly [K in keyof Fields]-?: InternalFlattenedTypePathsOf<Exclude<Fields[K], undefined>, SegmentOverride, PathOf<ValuePath,
|
|
512
|
+
type InternalFlattenedTypePathsOfObjectChildren<T extends ObjectTypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string, Depth extends number> = T extends ObjectTypeDef<infer Fields> ? keyof Fields extends string ? UnionToIntersection<{
|
|
513
|
+
readonly [K in keyof Fields]-?: InternalFlattenedTypePathsOf<Exclude<Fields[K], undefined>, SegmentOverride, PathOf<ValuePath, K>, PathOf<TypePath, K>, Depth>;
|
|
514
514
|
}[keyof Fields]> : never : never;
|
|
515
|
-
type InternalFlattenedTypePathsOfUnionChildren<T extends UnionTypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string,
|
|
516
|
-
readonly [K in keyof Unions]: InternalFlattenedTypePathsOfChildren<Unions[K], SegmentOverride, ValuePath, TypePath,
|
|
515
|
+
type InternalFlattenedTypePathsOfUnionChildren<T extends UnionTypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string, Depth extends number> = T extends UnionTypeDef<infer D, infer Unions> ? keyof Unions extends string ? D extends null ? UnionToIntersection<{
|
|
516
|
+
readonly [K in keyof Unions]: InternalFlattenedTypePathsOfChildren<Unions[K], SegmentOverride, ValuePath, TypePath, Depth>;
|
|
517
517
|
}[keyof Unions]> : UnionToIntersection<{
|
|
518
|
-
readonly [K in keyof Unions]: InternalFlattenedTypePathsOfChildren<Unions[K], SegmentOverride, ValuePath
|
|
518
|
+
readonly [K in keyof Unions]: InternalFlattenedTypePathsOfChildren<Unions[K], SegmentOverride, `${ValuePath}:${K}`, `${TypePath}:${K}`, Depth>;
|
|
519
519
|
}[keyof Unions]> : never : never;
|
|
520
520
|
|
|
521
521
|
type ValueTypesOfDiscriminatedUnion<U extends UnionTypeDef> = U extends UnionTypeDef<infer D, infer Unions> ? D extends string ? {
|