@strictly/define 0.0.22 → 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.
Files changed (39) 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-check-types.log +1 -1
  18. package/.turbo/turbo-release$colon$exports.log +1 -1
  19. package/dist/index.cjs +52 -40
  20. package/dist/index.d.cts +37 -37
  21. package/dist/index.d.ts +37 -37
  22. package/dist/index.js +52 -40
  23. package/package.json +1 -1
  24. package/transformers/flatteners/flatten_type_to.ts +2 -2
  25. package/transformers/flatteners/flatten_value_to.ts +8 -12
  26. package/transformers/flatteners/json_path.ts +3 -3
  27. package/transformers/flatteners/specs/flatten_json_value_to_type_paths_of.tests.ts +2 -2
  28. package/transformers/flatteners/specs/flatten_type_to.tests.ts +2 -2
  29. package/transformers/flatteners/specs/flatten_value_to.tests.ts +2 -2
  30. package/transformers/flatteners/specs/json_paths.tests.ts +3 -3
  31. package/transformers/flatteners/specs/value_path_to_type_path.tests.ts +92 -8
  32. package/transformers/flatteners/value_path_to_type_path.ts +37 -23
  33. package/types/flattened_types_of_type.ts +7 -18
  34. package/types/flattened_types_of_validating_type.ts +7 -19
  35. package/types/paths_of_type.ts +16 -22
  36. package/types/specs/flattened_types_of_type.tests.ts +6 -6
  37. package/types/specs/paths_of_type.tests.ts +2 -2
  38. package/types/specs/value_to_type_paths_of_type.tests.ts +4 -4
  39. package/types/value_to_type_paths_of_type.ts +5 -12
package/dist/index.d.ts 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 ? {
package/dist/index.js CHANGED
@@ -190,8 +190,8 @@ import {
190
190
  assertState
191
191
  } from "@strictly/base";
192
192
  function jsonPath(prefix, segment, qualifier) {
193
- const s = `.${qualifier != null ? qualifier : ""}${segment}`;
194
- return `${prefix}${s}`;
193
+ const s = `.${segment}`;
194
+ return `${prefix}${qualifier != null ? qualifier : ""}${s}`;
195
195
  }
196
196
  function jsonPathPop(path) {
197
197
  const parts = path.split(".");
@@ -229,11 +229,11 @@ function flattenValueTo({ definition }, v, setter, mapper2) {
229
229
  function internalFlattenValue(valuePath, typePath, typeDef, v, setter, mapper2, r) {
230
230
  r[valuePath] = mapper2(typeDef, v, setter, typePath, valuePath);
231
231
  if (v !== void 0) {
232
- return internalFlattenValueChildren(valuePath, typePath, "", typeDef, v, mapper2, r);
232
+ return internalFlattenValueChildren(valuePath, typePath, typeDef, v, mapper2, r);
233
233
  }
234
234
  return r;
235
235
  }
236
- function internalFlattenValueChildren(valuePath, typePath, qualifier, typeDef, v, mapper2, r) {
236
+ function internalFlattenValueChildren(valuePath, typePath, typeDef, v, mapper2, r) {
237
237
  switch (typeDef.type) {
238
238
  case 1 /* Literal */:
239
239
  return r;
@@ -242,9 +242,9 @@ function internalFlattenValueChildren(valuePath, typePath, qualifier, typeDef, v
242
242
  case 3 /* Record */:
243
243
  return internalFlattenRecordChildren(valuePath, typePath, typeDef, v, mapper2, r);
244
244
  case 4 /* Object */:
245
- return internalFlattenObjectChildren(valuePath, typePath, qualifier, typeDef, v, mapper2, r);
245
+ return internalFlattenObjectChildren(valuePath, typePath, typeDef, v, mapper2, r);
246
246
  case 5 /* Union */:
247
- return internalFlattenUnionChildren(valuePath, typePath, qualifier, typeDef, v, mapper2, r);
247
+ return internalFlattenUnionChildren(valuePath, typePath, typeDef, v, mapper2, r);
248
248
  default:
249
249
  throw new UnreachableError2(typeDef);
250
250
  }
@@ -285,14 +285,14 @@ function internalFlattenRecordChildren(valuePath, typePath, { valueTypeDef }, v,
285
285
  r
286
286
  );
287
287
  }
288
- function internalFlattenObjectChildren(valuePath, typePath, qualifier, { fields }, v, mapper2, r) {
288
+ function internalFlattenObjectChildren(valuePath, typePath, { fields }, v, mapper2, r) {
289
289
  return reduce2(
290
290
  fields,
291
291
  function(r2, k, fieldTypeDef) {
292
292
  const fieldValue = v[k];
293
293
  return internalFlattenValue(
294
- jsonPath(valuePath, k, qualifier),
295
- jsonPath(typePath, k, qualifier),
294
+ jsonPath(valuePath, k),
295
+ jsonPath(typePath, k),
296
296
  fieldTypeDef,
297
297
  fieldValue,
298
298
  (value) => {
@@ -305,13 +305,12 @@ function internalFlattenObjectChildren(valuePath, typePath, qualifier, { fields
305
305
  r
306
306
  );
307
307
  }
308
- function internalFlattenUnionChildren(valuePath, typePath, qualifier, typeDef, v, mapper2, r) {
308
+ function internalFlattenUnionChildren(valuePath, typePath, typeDef, v, mapper2, r) {
309
309
  const childTypeDef = getUnionTypeDef(typeDef, v);
310
- const newQualifier = typeDef.discriminator != null ? `${qualifier}${v[typeDef.discriminator]}:` : qualifier;
310
+ const qualifier = typeDef.discriminator != null ? `:${v[typeDef.discriminator]}` : "";
311
311
  return internalFlattenValueChildren(
312
- valuePath,
313
- typePath,
314
- newQualifier,
312
+ `${valuePath}${qualifier}`,
313
+ `${typePath}${qualifier}`,
315
314
  childTypeDef,
316
315
  v,
317
316
  mapper2,
@@ -478,8 +477,8 @@ function internalFlattenUnionTypeDefChildren(path, qualifier, {
478
477
  unions,
479
478
  function(acc, key, typeDef) {
480
479
  return internalFlattenTypeDefChildren(
481
- path,
482
- discriminator != null ? `${qualifier}${key}:` : qualifier,
480
+ discriminator != null ? `${path}:${qualifier}` : path,
481
+ key,
483
482
  typeDef,
484
483
  acc
485
484
  );
@@ -544,25 +543,36 @@ import {
544
543
  } from "@strictly/base";
545
544
  function valuePathToTypePath({ definition: typeDef }, valuePath, allowMissingPaths = false) {
546
545
  const valueSteps = valuePath.split(/\.|\[/g);
547
- assertEqual2(valueSteps[0], "$");
546
+ const parts = valueSteps[0].split(":");
547
+ const [
548
+ first,
549
+ ...qualifiers
550
+ ] = parts;
551
+ assertEqual2(first, "$");
548
552
  const typeSteps = internalJsonValuePathToTypePath(
549
553
  typeDef,
554
+ qualifiers,
550
555
  valueSteps.slice(1),
551
556
  allowMissingPaths,
552
557
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
553
558
  valuePath
554
559
  );
555
- typeSteps.unshift("$");
560
+ typeSteps.unshift(valueSteps[0]);
556
561
  return typeSteps.join(".");
557
562
  }
558
- function internalJsonValuePathToTypePath(typeDef, valueSteps, allowMissingPaths, originalValuePath) {
563
+ function internalJsonValuePathToTypePath(typeDef, qualifiers, valueSteps, allowMissingPaths, originalValuePath) {
559
564
  if (valueSteps.length === 0) {
560
565
  return [];
561
566
  }
562
567
  const [
563
- valueStep,
568
+ nextValueStepAndQualifiersString,
564
569
  ...remainingValueSteps
565
570
  ] = valueSteps;
571
+ const nextValueStepAndQualifiers = nextValueStepAndQualifiersString.split(":");
572
+ const [
573
+ valueStep,
574
+ ...nextQualifiers
575
+ ] = nextValueStepAndQualifiers;
566
576
  switch (typeDef.type) {
567
577
  case 1 /* Literal */:
568
578
  if (allowMissingPaths) {
@@ -571,14 +581,18 @@ function internalJsonValuePathToTypePath(typeDef, valueSteps, allowMissingPaths,
571
581
  throw new PreconditionFailedError(
572
582
  "literal should terminate path {} ({})",
573
583
  originalValuePath,
574
- valueStep
584
+ nextValueStepAndQualifiersString
575
585
  );
576
586
  }
577
587
  case 2 /* List */:
578
588
  return [
579
- "*",
589
+ [
590
+ "*",
591
+ ...nextQualifiers
592
+ ].join(":"),
580
593
  ...internalJsonValuePathToTypePath(
581
594
  typeDef.elements,
595
+ nextQualifiers,
582
596
  remainingValueSteps,
583
597
  allowMissingPaths,
584
598
  originalValuePath
@@ -586,9 +600,13 @@ function internalJsonValuePathToTypePath(typeDef, valueSteps, allowMissingPaths,
586
600
  ];
587
601
  case 3 /* Record */:
588
602
  return [
589
- "*",
603
+ [
604
+ "*",
605
+ ...nextQualifiers
606
+ ].join(":"),
590
607
  ...internalJsonValuePathToTypePath(
591
608
  typeDef.valueTypeDef,
609
+ nextQualifiers,
592
610
  remainingValueSteps,
593
611
  allowMissingPaths,
594
612
  originalValuePath
@@ -603,9 +621,10 @@ function internalJsonValuePathToTypePath(typeDef, valueSteps, allowMissingPaths,
603
621
  assertExists(typeDef.fields[valueStep], "missing field in {} ({})", originalValuePath, valueStep);
604
622
  }
605
623
  return [
606
- valueStep,
624
+ nextValueStepAndQualifiersString,
607
625
  ...internalJsonValuePathToTypePath(
608
626
  typeDef.fields[valueStep],
627
+ nextQualifiers,
609
628
  remainingValueSteps,
610
629
  allowMissingPaths,
611
630
  originalValuePath
@@ -627,6 +646,7 @@ function internalJsonValuePathToTypePath(typeDef, valueSteps, allowMissingPaths,
627
646
  assertExists(union2, "expected a complex union {}", originalValuePath);
628
647
  return internalJsonValuePathToTypePath(
629
648
  union2,
649
+ nextQualifiers,
630
650
  valueSteps,
631
651
  allowMissingPaths,
632
652
  originalValuePath
@@ -635,8 +655,7 @@ function internalJsonValuePathToTypePath(typeDef, valueSteps, allowMissingPaths,
635
655
  return [];
636
656
  }
637
657
  } else {
638
- const qualifierIndex = valueStep.indexOf(":");
639
- if (qualifierIndex < 0) {
658
+ if (qualifiers.length === 0) {
640
659
  if (allowMissingPaths) {
641
660
  return valueSteps;
642
661
  } else {
@@ -647,25 +666,18 @@ function internalJsonValuePathToTypePath(typeDef, valueSteps, allowMissingPaths,
647
666
  );
648
667
  }
649
668
  }
650
- const qualifier = valueStep.substring(0, qualifierIndex);
651
- const remainder = valueStep.substring(qualifierIndex + 1);
652
- const union2 = assertExistsAndReturn(typeDef.unions[qualifier], "missing union {}", qualifier);
653
669
  const [
654
- typeStep,
655
- ...remainingTypeSteps
656
- ] = internalJsonValuePathToTypePath(
670
+ qualifier,
671
+ ...remainingQualifiers
672
+ ] = qualifiers;
673
+ const union2 = assertExistsAndReturn(typeDef.unions[qualifier], "missing union {}", qualifier);
674
+ return internalJsonValuePathToTypePath(
657
675
  union2,
658
- [
659
- remainder,
660
- ...remainingValueSteps
661
- ],
676
+ remainingQualifiers,
677
+ valueSteps,
662
678
  allowMissingPaths,
663
679
  originalValuePath
664
680
  );
665
- return [
666
- `${qualifier}:${typeStep}`,
667
- ...remainingTypeSteps
668
- ];
669
681
  }
670
682
  default:
671
683
  throw new UnreachableError5(typeDef);
package/package.json CHANGED
@@ -38,7 +38,7 @@
38
38
  "test:watch": "vitest"
39
39
  },
40
40
  "type": "module",
41
- "version": "0.0.22",
41
+ "version": "0.0.23",
42
42
  "exports": {
43
43
  ".": {
44
44
  "import": {
@@ -116,8 +116,8 @@ function internalFlattenUnionTypeDefChildren(
116
116
  unions,
117
117
  function (acc, key, typeDef: StrictTypeDef) {
118
118
  return internalFlattenTypeDefChildren(
119
- path,
120
- discriminator != null ? `${qualifier}${key}:` : qualifier,
119
+ discriminator != null ? `${path}:${qualifier}` : path,
120
+ key,
121
121
  typeDef,
122
122
  acc,
123
123
  )
@@ -68,7 +68,7 @@ function internalFlattenValue<M>(
68
68
  // assume undefined means the field is optional and not populated
69
69
  // TODO: actually capture if field is optional in typedef (or in builder for creating validator)
70
70
  if (v !== undefined) {
71
- return internalFlattenValueChildren(valuePath, typePath, '', typeDef, v, mapper, r)
71
+ return internalFlattenValueChildren(valuePath, typePath, typeDef, v, mapper, r)
72
72
  }
73
73
  return r
74
74
  }
@@ -76,7 +76,6 @@ function internalFlattenValue<M>(
76
76
  function internalFlattenValueChildren<M>(
77
77
  valuePath: string,
78
78
  typePath: string,
79
- qualifier: string,
80
79
  typeDef: StrictTypeDef,
81
80
  v: AnyValueType,
82
81
  mapper: Mapper<M>,
@@ -91,9 +90,9 @@ function internalFlattenValueChildren<M>(
91
90
  case TypeDefType.Record:
92
91
  return internalFlattenRecordChildren(valuePath, typePath, typeDef, v, mapper, r)
93
92
  case TypeDefType.Object:
94
- return internalFlattenObjectChildren(valuePath, typePath, qualifier, typeDef, v, mapper, r)
93
+ return internalFlattenObjectChildren(valuePath, typePath, typeDef, v, mapper, r)
95
94
  case TypeDefType.Union:
96
- return internalFlattenUnionChildren(valuePath, typePath, qualifier, typeDef, v, mapper, r)
95
+ return internalFlattenUnionChildren(valuePath, typePath, typeDef, v, mapper, r)
97
96
  default:
98
97
  throw new UnreachableError(typeDef)
99
98
  }
@@ -154,7 +153,6 @@ function internalFlattenRecordChildren<M>(
154
153
  function internalFlattenObjectChildren<M>(
155
154
  valuePath: string,
156
155
  typePath: string,
157
- qualifier: string,
158
156
  { fields }: StrictObjectTypeDef,
159
157
  v: Record<string, AnyValueType>,
160
158
  mapper: Mapper<M>,
@@ -165,8 +163,8 @@ function internalFlattenObjectChildren<M>(
165
163
  function (r, k, fieldTypeDef) {
166
164
  const fieldValue = v[k]
167
165
  return internalFlattenValue(
168
- jsonPath(valuePath, k, qualifier),
169
- jsonPath(typePath, k, qualifier),
166
+ jsonPath(valuePath, k),
167
+ jsonPath(typePath, k),
170
168
  fieldTypeDef,
171
169
  fieldValue,
172
170
  (value: AnyValueType) => {
@@ -183,18 +181,16 @@ function internalFlattenObjectChildren<M>(
183
181
  function internalFlattenUnionChildren<M>(
184
182
  valuePath: string,
185
183
  typePath: string,
186
- qualifier: string,
187
184
  typeDef: StrictUnionTypeDef,
188
185
  v: AnyValueType,
189
186
  mapper: Mapper<M>,
190
187
  r: Record<string, M>,
191
188
  ): AnyValueType {
192
189
  const childTypeDef = getUnionTypeDef(typeDef, v)
193
- const newQualifier = typeDef.discriminator != null ? `${qualifier}${v[typeDef.discriminator]}:` : qualifier
190
+ const qualifier = typeDef.discriminator != null ? `:${v[typeDef.discriminator]}` : ''
194
191
  return internalFlattenValueChildren(
195
- valuePath,
196
- typePath,
197
- newQualifier,
192
+ `${valuePath}${qualifier}`,
193
+ `${typePath}${qualifier}`,
198
194
  childTypeDef,
199
195
  v,
200
196
  mapper,
@@ -12,15 +12,15 @@ export function jsonPath<
12
12
  Prefix extends string,
13
13
  Segment extends number | string,
14
14
  Qualifier extends string,
15
- >(prefix: Prefix, segment: Segment, qualifier: Qualifier): `${Prefix}.${Qualifier}${Segment}`
15
+ >(prefix: Prefix, segment: Segment, qualifier: Qualifier): `${Prefix}${Qualifier}.${Segment}`
16
16
  export function jsonPath<
17
17
  Prefix extends string,
18
18
  Segment extends number | string,
19
19
  Qualifier extends string = '',
20
20
  >(prefix: Prefix, segment: Segment, qualifier?: Qualifier) {
21
- const s = `.${qualifier ?? ''}${segment}`
21
+ const s = `.${segment}`
22
22
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
23
- return `${prefix}${s}` as `${Prefix}.${Qualifier}${Segment}`
23
+ return `${prefix}${qualifier ?? ''}${s}` as `${Prefix}${Qualifier}.${Segment}`
24
24
  }
25
25
 
26
26
  // TODO type safety
@@ -106,8 +106,8 @@ describe('flattenJsonValueToTypePathsOf', function () {
106
106
  it('equals expected value', function () {
107
107
  expect(flattened).toEqual({
108
108
  $: '$',
109
- '$.x:a': '$.x:a',
110
- '$.x:b': '$.x:b',
109
+ '$:x.a': '$:x.a',
110
+ '$:x.b': '$:x.b',
111
111
  })
112
112
  })
113
113
  })
@@ -135,8 +135,8 @@ describe('flattenTypeDefTo', function () {
135
135
  it('equals expected type', function () {
136
136
  expect(flattened).toEqual({
137
137
  $: TypeDefType.Union,
138
- '$.a:a': TypeDefType.Literal,
139
- '$.b:b': TypeDefType.Literal,
138
+ '$:a.a': TypeDefType.Literal,
139
+ '$:b.b': TypeDefType.Literal,
140
140
  })
141
141
  })
142
142
 
@@ -329,7 +329,7 @@ describe('flattenValueTo', function () {
329
329
  it('equals expected type', function () {
330
330
  expect(flattened).toEqual({
331
331
  $: '{"d":"1","a":2}',
332
- ['$.1:a']: '2',
332
+ ['$:1.a']: '2',
333
333
  })
334
334
  })
335
335
  })
@@ -357,7 +357,7 @@ describe('flattenValueTo', function () {
357
357
  })
358
358
 
359
359
  it('sets an internal value', function () {
360
- flattened['$.1:a'](1)
360
+ flattened['$:1.a'](1)
361
361
 
362
362
  expect(u).toEqual({
363
363
  d: '1',
@@ -31,14 +31,14 @@ describe('json_paths', () => {
31
31
  })
32
32
 
33
33
  describe('qualified', () => {
34
- const path = jsonPath('$', 'x', 'y:')
34
+ const path = jsonPath('$', 'x', ':y')
35
35
 
36
36
  it('has the expected type', () => {
37
- expectTypeOf(path).toEqualTypeOf<'$.y:x'>()
37
+ expectTypeOf(path).toEqualTypeOf<'$:y.x'>()
38
38
  })
39
39
 
40
40
  it('has the expected value', () => {
41
- expect(path).toEqual('$.y:x')
41
+ expect(path).toEqual('$:y.x')
42
42
  })
43
43
  })
44
44
  })