@strictly/define 0.0.22 → 0.0.24

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.
Files changed (38) hide show
  1. package/.out/transformers/flatteners/flatten_type_to.js +1 -1
  2. package/.out/transformers/flatteners/flatten_value_to.js +9 -9
  3. package/.out/transformers/flatteners/json_path.d.ts +1 -1
  4. package/.out/transformers/flatteners/json_path.js +2 -2
  5. package/.out/transformers/flatteners/specs/flatten_json_value_to_type_paths_of.tests.js +2 -2
  6. package/.out/transformers/flatteners/specs/flatten_type_to.tests.js +2 -2
  7. package/.out/transformers/flatteners/specs/flatten_value_to.tests.js +2 -2
  8. package/.out/transformers/flatteners/specs/json_paths.tests.js +2 -2
  9. package/.out/transformers/flatteners/specs/value_path_to_type_path.tests.js +82 -8
  10. package/.out/transformers/flatteners/value_path_to_type_path.js +26 -25
  11. package/.out/tsconfig.tsbuildinfo +1 -1
  12. package/.out/types/flattened_types_of_type.d.ts +11 -11
  13. package/.out/types/flattened_types_of_validating_type.d.ts +11 -11
  14. package/.out/types/paths_of_type.d.ts +7 -7
  15. package/.out/types/value_to_type_paths_of_type.d.ts +7 -7
  16. package/.turbo/turbo-build.log +8 -8
  17. package/.turbo/turbo-release$colon$exports.log +1 -1
  18. package/dist/index.cjs +52 -40
  19. package/dist/index.d.cts +37 -37
  20. package/dist/index.d.ts +37 -37
  21. package/dist/index.js +52 -40
  22. package/package.json +1 -1
  23. package/transformers/flatteners/flatten_type_to.ts +2 -2
  24. package/transformers/flatteners/flatten_value_to.ts +8 -12
  25. package/transformers/flatteners/json_path.ts +3 -3
  26. package/transformers/flatteners/specs/flatten_json_value_to_type_paths_of.tests.ts +2 -2
  27. package/transformers/flatteners/specs/flatten_type_to.tests.ts +2 -2
  28. package/transformers/flatteners/specs/flatten_value_to.tests.ts +2 -2
  29. package/transformers/flatteners/specs/json_paths.tests.ts +3 -3
  30. package/transformers/flatteners/specs/value_path_to_type_path.tests.ts +92 -8
  31. package/transformers/flatteners/value_path_to_type_path.ts +37 -23
  32. package/types/flattened_types_of_type.ts +7 -18
  33. package/types/flattened_types_of_validating_type.ts +7 -19
  34. package/types/paths_of_type.ts +16 -22
  35. package/types/specs/flattened_types_of_type.tests.ts +6 -6
  36. package/types/specs/paths_of_type.tests.ts +2 -2
  37. package/types/specs/value_to_type_paths_of_type.tests.ts +4 -4
  38. 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, '', Depth>;
6
- type InternalFlattenedTypeDefsOf<T extends TypeDef, SegmentOverride extends string | null, Path extends string, Qualifier extends string, Depth extends number> = {
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, Qualifier, Depth>;
9
- type InternalFlattenedTypeDefsOfChildren<T extends TypeDef, SegmentOverride extends string | null, Path extends string, Qualifier 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, Qualifier, NextDepth> : T extends UnionTypeDef ? InternalFlattenedTypeDefsOfUnionChildren<T, SegmentOverride, Path, Qualifier, NextDepth> : never;
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>, '', 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, Qualifier extends string, Depth extends number> = T extends ObjectTypeDef<infer Fields> ? keyof Fields extends string ? UnionToIntersection<{
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, `${Qualifier}${K}`, null>, '', Depth> : InternalFlattenedTypeDefsOf<Exclude<Fields[K], undefined>, SegmentOverride, PathOf<Path, `${Qualifier}${K}`, null>, '', Depth>;
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, Qualifier 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>;
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, Path, `${Qualifier}${K}:`, Depth>;
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, '', Depth>;
7
- type InternalFlattenedTypeDefsOf<T extends TypeDef, SegmentOverride extends string | null, Path extends string, Qualifier extends string, Depth extends number> = {
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, Qualifier, Depth>;
10
- type InternalFlattenedTypeDefsOfChildren<T extends TypeDef, SegmentOverride extends string | null, Path extends string, Qualifier 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, Qualifier, NextDepth> : T extends ValidatingUnionTypeDef ? InternalFlattenedTypeDefsOfUnionChildren<T, SegmentOverride, Path, Qualifier, NextDepth> : never;
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>, '', 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, Qualifier extends string, Depth extends number> = T extends ValidatingObjectTypeDef<infer _E, infer _C, infer Fields> ? keyof Fields extends string ? UnionToIntersection<{
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, `${Qualifier}${K}`, null>, '', Depth> : InternalFlattenedTypeDefsOf<Exclude<Fields[K], undefined>, SegmentOverride, PathOf<Path, `${Qualifier}${K}`, null>, '', Depth>;
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, Qualifier 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>;
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, Path, `${Qualifier}${K}:`, Depth>;
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, '', NextDepth> | Prefix;
6
- type InternalJsonPathsOfChildren<F extends TypeDef, Prefix extends string, SegmentOverride extends string | null, Qualifier extends string, 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, Qualifier, Depth> : F extends UnionTypeDef ? InternalJsonPathsOfUnionChildren<F, Prefix, SegmentOverride, Qualifier, Depth> : never;
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, Qualifier extends string, Depth extends number> = F extends ObjectTypeDef<infer Fields> ? keyof Fields extends string ? {
11
- [K in keyof Fields]: InternalJsonPathsOf<Fields[K], PathOf<Prefix, `${Qualifier}${K}`, null>, SegmentOverride, Depth>;
12
- }[keyof Fields] : never : never;
13
- type InternalJsonPathsOfUnionChildren<F extends UnionTypeDef, Prefix extends string, SegmentOverride extends string | null, Qualifier extends string, Depth extends number> = F extends UnionTypeDef<infer D, infer Unions> ? keyof Unions extends string ? {
14
- readonly [K in keyof Unions]: InternalJsonPathsOfChildren<Unions[K], Prefix, SegmentOverride, D extends null ? Qualifier : `${Qualifier}${K}:`, Depth>;
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, '', Depth>;
10
- type InternalFlattenedTypePathsOfChildren<T extends TypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string, Qualifier 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, Qualifier, NextDepth> : T extends UnionTypeDef ? InternalFlattenedTypePathsOfUnionChildren<T, SegmentOverride, ValuePath, TypePath, Qualifier, NextDepth> : never;
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, Qualifier 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, `${Qualifier}${K}`>, PathOf<TypePath, `${Qualifier}${K}`>, Depth>;
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, Qualifier 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>;
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, TypePath, `${Qualifier}${K}:`, Depth>;
20
+ readonly [K in keyof Unions]: InternalFlattenedTypePathsOfChildren<Unions[K], SegmentOverride, `${ValuePath}:${K}`, `${TypePath}:${K}`, Depth>;
21
21
  }[keyof Unions]> : never : never;
22
22
  export {};
@@ -7,12 +7,12 @@ $ tsup
7
7
  CLI Target: es6
8
8
  CJS Build start
9
9
  ESM Build start
10
- ESM dist/index.js 30.47 KB
11
- ESM ⚡️ Build success in 109ms
12
- CJS dist/index.cjs 33.05 KB
13
- CJS ⚡️ Build success in 114ms
10
+ CJS dist/index.cjs 33.26 KB
11
+ CJS ⚡️ Build success in 98ms
12
+ ESM dist/index.js 30.67 KB
13
+ ESM ⚡️ Build success in 106ms
14
14
  DTS Build start
15
- DTS ⚡️ Build success in 7277ms
16
- DTS dist/index.d.cts 42.22 KB
17
- DTS dist/index.d.ts 42.22 KB
18
- Done in 8.51s.
15
+ DTS ⚡️ Build success in 13457ms
16
+ DTS dist/index.d.cts 41.51 KB
17
+ DTS dist/index.d.ts 41.51 KB
18
+ Done in 14.99s.
@@ -1,3 +1,3 @@
1
1
  yarn run v1.22.22
2
2
  $ json -f package.json -f package.exports.json --merge > package.release.json
3
- Done in 0.12s.
3
+ Done in 0.10s.
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 = `.${qualifier != null ? qualifier : ""}${segment}`;
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, "", typeDef, v, mapper2, r);
276
+ return internalFlattenValueChildren(valuePath, typePath, typeDef, v, mapper2, r);
277
277
  }
278
278
  return r;
279
279
  }
280
- function internalFlattenValueChildren(valuePath, typePath, qualifier, typeDef, v, mapper2, r) {
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, qualifier, typeDef, v, mapper2, r);
289
+ return internalFlattenObjectChildren(valuePath, typePath, typeDef, v, mapper2, r);
290
290
  case 5 /* Union */:
291
- return internalFlattenUnionChildren(valuePath, typePath, qualifier, typeDef, v, mapper2, r);
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, qualifier, { fields }, v, mapper2, r) {
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, qualifier),
339
- jsonPath(typePath, k, qualifier),
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, qualifier, typeDef, v, mapper2, r) {
352
+ function internalFlattenUnionChildren(valuePath, typePath, typeDef, v, mapper2, r) {
353
353
  const childTypeDef = getUnionTypeDef(typeDef, v);
354
- const newQualifier = typeDef.discriminator != null ? `${qualifier}${v[typeDef.discriminator]}:` : qualifier;
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
- discriminator != null ? `${qualifier}${key}:` : qualifier,
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
- (0, import_base6.assertEqual)(valueSteps[0], "$");
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
- valueStep,
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
- valueStep
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
- valueStep,
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
- const qualifierIndex = valueStep.indexOf(":");
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
- typeStep,
689
- ...remainingTypeSteps
690
- ] = internalJsonValuePathToTypePath(
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
- remainder,
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, '', Depth>;
156
- type InternalFlattenedTypeDefsOf$1<T extends TypeDef, SegmentOverride extends string | null, Path extends string, Qualifier extends string, Depth extends number> = {
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, Qualifier, Depth>;
159
- type InternalFlattenedTypeDefsOfChildren$1<T extends TypeDef, SegmentOverride extends string | null, Path extends string, Qualifier 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, Qualifier, NextDepth> : T extends UnionTypeDef ? InternalFlattenedTypeDefsOfUnionChildren$1<T, SegmentOverride, Path, Qualifier, NextDepth> : never;
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>, '', 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, Qualifier extends string, Depth extends number> = T extends ObjectTypeDef<infer Fields> ? keyof Fields extends string ? UnionToIntersection<{
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, `${Qualifier}${K}`, null>, '', Depth> : InternalFlattenedTypeDefsOf$1<Exclude<Fields[K], undefined>, SegmentOverride, PathOf<Path, `${Qualifier}${K}`, null>, '', Depth>;
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, Qualifier 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>;
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, Path, `${Qualifier}${K}:`, Depth>;
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, '', Depth>;
275
- type InternalFlattenedTypeDefsOf<T extends TypeDef, SegmentOverride extends string | null, Path extends string, Qualifier extends string, Depth extends number> = {
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, Qualifier, Depth>;
278
- type InternalFlattenedTypeDefsOfChildren<T extends TypeDef, SegmentOverride extends string | null, Path extends string, Qualifier 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, Qualifier, NextDepth> : T extends ValidatingUnionTypeDef ? InternalFlattenedTypeDefsOfUnionChildren<T, SegmentOverride, Path, Qualifier, NextDepth> : never;
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>, '', 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, Qualifier extends string, Depth extends number> = T extends ValidatingObjectTypeDef<infer _E, infer _C, infer Fields> ? keyof Fields extends string ? UnionToIntersection<{
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, `${Qualifier}${K}`, null>, '', Depth> : InternalFlattenedTypeDefsOf<Exclude<Fields[K], undefined>, SegmentOverride, PathOf<Path, `${Qualifier}${K}`, null>, '', Depth>;
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, Qualifier 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>;
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, Path, `${Qualifier}${K}:`, Depth>;
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}.${Qualifier}${Segment}`;
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, '', NextDepth> | Prefix;
493
- type InternalJsonPathsOfChildren<F extends TypeDef, Prefix extends string, SegmentOverride extends string | null, Qualifier extends string, 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, Qualifier, Depth> : F extends UnionTypeDef ? InternalJsonPathsOfUnionChildren<F, Prefix, SegmentOverride, Qualifier, Depth> : never;
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, Qualifier extends string, Depth extends number> = F extends ObjectTypeDef<infer Fields> ? keyof Fields extends string ? {
498
- [K in keyof Fields]: InternalJsonPathsOf<Fields[K], PathOf<Prefix, `${Qualifier}${K}`, null>, SegmentOverride, Depth>;
499
- }[keyof Fields] : never : never;
500
- type InternalJsonPathsOfUnionChildren<F extends UnionTypeDef, Prefix extends string, SegmentOverride extends string | null, Qualifier extends string, Depth extends number> = F extends UnionTypeDef<infer D, infer Unions> ? keyof Unions extends string ? {
501
- readonly [K in keyof Unions]: InternalJsonPathsOfChildren<Unions[K], Prefix, SegmentOverride, D extends null ? Qualifier : `${Qualifier}${K}:`, Depth>;
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, '', Depth>;
508
- type InternalFlattenedTypePathsOfChildren<T extends TypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string, Qualifier 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, Qualifier, NextDepth> : T extends UnionTypeDef ? InternalFlattenedTypePathsOfUnionChildren<T, SegmentOverride, ValuePath, TypePath, Qualifier, NextDepth> : never;
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, Qualifier 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, `${Qualifier}${K}`>, PathOf<TypePath, `${Qualifier}${K}`>, Depth>;
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, Qualifier 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>;
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, TypePath, `${Qualifier}${K}:`, Depth>;
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 ? {