@strictly/define 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.out/index.d.ts +17 -11
- package/.out/index.js +17 -11
- package/.out/transformers/copies/copy.d.ts +3 -3
- package/.out/transformers/copies/copy_to.d.ts +3 -3
- package/.out/transformers/copies/copy_to.js +4 -0
- package/.out/transformers/copies/mobx_copy.d.ts +4 -4
- package/.out/transformers/copies/mobx_copy.js +1 -1
- package/.out/transformers/copies/specs/copy_to.tests.js +8 -8
- package/.out/transformers/copies/specs/mobx_copy.tests.js +1 -1
- package/.out/transformers/flatteners/flatten_accessors_of_type.d.ts +5 -0
- package/.out/transformers/flatteners/flatten_accessors_of_type.js +11 -0
- package/.out/transformers/flatteners/flatten_json_value_to_type_paths_of.d.ts +2 -2
- package/.out/transformers/flatteners/flatten_json_value_to_type_paths_of.js +2 -2
- package/.out/transformers/flatteners/{flatten_type_def_to.d.ts → flatten_type_to.d.ts} +1 -1
- package/.out/transformers/flatteners/{flatten_type_def_to.js → flatten_type_to.js} +1 -1
- package/.out/transformers/flatteners/{flatten_type_defs_of.d.ts → flatten_types_of_type.d.ts} +1 -1
- package/.out/transformers/flatteners/flatten_types_of_type.js +7 -0
- package/.out/transformers/flatteners/flatten_validation_errors_of_type.d.ts +22 -0
- package/.out/transformers/flatteners/flatten_validation_errors_of_type.js +10 -0
- package/.out/transformers/flatteners/flatten_validators_of_validating_type.d.ts +4 -0
- package/.out/transformers/flatteners/flatten_validators_of_validating_type.js +17 -0
- package/.out/transformers/flatteners/{flatten_value_type_to.d.ts → flatten_value_to.d.ts} +4 -4
- package/.out/transformers/flatteners/{flatten_value_type_to.js → flatten_value_to.js} +7 -2
- package/.out/transformers/flatteners/flatten_values_of_type.d.ts +3 -0
- package/.out/transformers/flatteners/flatten_values_of_type.js +7 -0
- package/.out/transformers/flatteners/specs/{flatten_accessors_of.tests.js → flatten_accessors_of_type.tests.js} +5 -6
- package/.out/transformers/flatteners/specs/flatten_json_value_to_type_paths_of.tests.js +6 -6
- package/.out/transformers/flatteners/specs/{flatten_type_def_to.tests.js → flatten_type_to.tests.js} +15 -13
- package/.out/transformers/flatteners/specs/flatten_types_of_type.tests.js +18 -0
- package/.out/transformers/flatteners/specs/flatten_validation_errors_of_type.tests.js +25 -0
- package/.out/transformers/flatteners/specs/{flatten_value_type_to.tests.js → flatten_value_to.tests.js} +81 -58
- package/.out/transformers/flatteners/specs/{flatten_value_types_of.tests.js → flatten_values_of_type.tests.js} +4 -4
- package/.out/transformers/flatteners/specs/value_path_to_type_path.tests.js +5 -3
- package/.out/transformers/flatteners/value_path_to_type_path.d.ts +1 -1
- package/.out/tsconfig.tsbuildinfo +1 -1
- package/.out/types/builders.d.ts +55 -29
- package/.out/types/builders.js +116 -32
- package/.out/types/definitions.d.ts +1 -1
- package/.out/types/flattened_accessors_of_type.d.ts +9 -0
- package/.out/types/{flattened_type_defs_of.d.ts → flattened_types_of_type.d.ts} +9 -6
- package/.out/types/flattened_types_of_validating_type.d.ts +25 -0
- package/.out/types/flattened_validators_of_validating_type.d.ts +10 -0
- package/.out/types/flattened_values_of_type.d.ts +6 -0
- package/.out/types/{mobx_value_type_of.d.ts → mobx_value_of_type.d.ts} +2 -2
- package/.out/types/{partial_type_def_of.d.ts → partial_type_of_type.d.ts} +1 -1
- package/.out/types/path_of.d.ts +1 -0
- package/.out/types/{json_paths_of.d.ts → paths_of_type.d.ts} +5 -5
- package/.out/types/readonly_type_of_type.d.ts +29 -0
- package/.out/types/specs/builder.tests.js +73 -23
- package/.out/types/specs/{flattened_accessors_of.tests.js → flattened_accessors_of_type.tests.js} +1 -1
- package/.out/types/specs/{flattened_type_defs_of.tests.js → flattened_types_of_type.tests.js} +22 -15
- package/.out/types/specs/flattened_validators_of_validating_type.tests.js +24 -0
- package/.out/types/specs/flattened_values_of_type.tests.js +18 -0
- package/.out/types/specs/{partial_type_def_of.tests.js → partial_type_of_type.tests.js} +4 -4
- package/.out/types/specs/{json_paths_of.tests.js → paths_of_type.tests.js} +19 -19
- package/.out/types/specs/{readonly_type_def_of.tests.js → readonly_type_of_type.tests.js} +6 -6
- package/.out/types/specs/type_of_type.tests.d.ts +1 -0
- package/.out/types/specs/type_of_type.tests.js +27 -0
- package/.out/types/specs/value_of_type.tests.d.ts +1 -0
- package/.out/types/specs/{value_type_of.tests.js → value_of_type.tests.js} +1 -1
- package/.out/types/specs/value_to_type_paths_of_type.tests.d.ts +1 -0
- package/.out/types/specs/{value_to_type_paths_of.tests.js → value_to_type_paths_of_type.tests.js} +9 -9
- package/.out/types/specs/value_types_of_discriminated_union.tests.js +2 -2
- package/.out/types/strict_definitions.d.ts +2 -2
- package/.out/types/type_of_type.d.ts +49 -0
- package/.out/types/type_of_type.js +70 -0
- package/.out/types/validating_definitions.d.ts +49 -0
- package/.out/types/validating_definitions.js +1 -0
- package/.out/types/validating_type_def_with_error.d.ts +55 -0
- package/.out/types/validating_type_def_with_error.js +1 -0
- package/.out/types/value_of_type.d.ts +24 -0
- package/.out/types/value_of_type.js +1 -0
- package/.out/types/{value_to_type_paths_of.d.ts → value_to_type_paths_of_type.d.ts} +13 -13
- package/.out/types/value_to_type_paths_of_type.js +1 -0
- package/.out/types/value_types_of_discriminated_union.d.ts +5 -4
- package/.out/validation/errors_of_validators.d.ts +4 -0
- package/.out/validation/errors_of_validators.js +1 -0
- package/.out/validation/specs/errors_of_validators.tests.d.ts +1 -0
- package/.out/validation/specs/errors_of_validators.tests.js +9 -0
- package/.out/validation/specs/validators_of_values.tests.d.ts +1 -0
- package/.out/validation/specs/validators_of_values.tests.js +21 -0
- package/.out/validation/validator.d.ts +21 -0
- package/.out/validation/validator.js +26 -0
- package/.out/validation/validators/defined_validator.d.ts +10 -0
- package/.out/validation/validators/defined_validator.js +18 -0
- package/.out/validation/validators/minimum_string_length_validator.d.ts +16 -0
- package/.out/validation/validators/minimum_string_length_validator.js +23 -0
- package/.out/validation/validators_of_values.d.ts +4 -0
- package/.out/validation/validators_of_values.js +1 -0
- package/.turbo/turbo-build.log +9 -9
- package/.turbo/turbo-check-types.log +1 -1
- package/.turbo/turbo-release$colon$exports.log +1 -1
- package/README.md +16 -2
- package/dist/index.cjs +364 -76
- package/dist/index.d.cts +365 -114
- package/dist/index.d.ts +365 -114
- package/dist/index.js +355 -73
- package/index.ts +17 -11
- package/package.json +11 -3
- package/transformers/copies/copy.ts +4 -4
- package/transformers/copies/copy_to.ts +11 -7
- package/transformers/copies/mobx_copy.ts +6 -6
- package/transformers/copies/specs/copy_to.tests.ts +8 -8
- package/transformers/copies/specs/mobx_copy.tests.ts +3 -3
- package/transformers/flatteners/{flatten_accessors_of.ts → flatten_accessors_of_type.ts} +10 -10
- package/transformers/flatteners/flatten_json_value_to_type_paths_of.ts +5 -5
- package/transformers/flatteners/{flatten_type_def_to.ts → flatten_type_to.ts} +1 -1
- package/transformers/flatteners/{flatten_type_defs_of.ts → flatten_types_of_type.ts} +3 -3
- package/transformers/flatteners/flatten_validation_errors_of_type.ts +93 -0
- package/transformers/flatteners/flatten_validators_of_validating_type.ts +32 -0
- package/transformers/flatteners/{flatten_value_type_to.ts → flatten_value_to.ts} +12 -7
- package/transformers/flatteners/{flatten_value_types_of.ts → flatten_values_of_type.ts} +6 -6
- package/transformers/flatteners/specs/{flatten_accessors_of.tests.ts → flatten_accessors_of_type.tests.ts} +10 -11
- package/transformers/flatteners/specs/flatten_json_value_to_type_paths_of.tests.ts +6 -6
- package/transformers/flatteners/specs/{flatten_type_def_to.tests.ts → flatten_type_to.tests.ts} +15 -13
- package/transformers/flatteners/specs/flatten_types_of_type.tests.ts +27 -0
- package/transformers/flatteners/specs/flatten_validation_errors_of_type.tests.ts +48 -0
- package/transformers/flatteners/specs/{flatten_value_type_to.tests.ts → flatten_value_to.tests.ts} +124 -91
- package/transformers/flatteners/specs/{flatten_value_types_of.tests.ts → flatten_values_of_type.tests.ts} +4 -4
- package/transformers/flatteners/specs/value_path_to_type_path.tests.ts +20 -18
- package/transformers/flatteners/value_path_to_type_path.ts +4 -4
- package/types/builders.ts +239 -71
- package/types/definitions.ts +2 -2
- package/types/{flattened_accessors_of.ts → flattened_accessors_of_type.ts} +3 -3
- package/types/{flattened_type_defs_of.ts → flattened_types_of_type.ts} +22 -12
- package/types/flattened_types_of_validating_type.ts +152 -0
- package/types/flattened_validators_of_validating_type.ts +33 -0
- package/types/flattened_values_of_type.ts +11 -0
- package/types/{mobx_value_type_of.ts → mobx_value_of_type.ts} +2 -2
- package/types/{partial_type_def_of.ts → partial_type_of_type.ts} +3 -1
- package/types/{json_path_of.ts → path_of.ts} +1 -1
- package/types/{json_paths_of.ts → paths_of_type.ts} +5 -5
- package/types/readonly_type_of_type.ts +54 -0
- package/types/specs/builder.tests.ts +205 -54
- package/types/specs/{flattened_accessors_of.tests.ts → flattened_accessors_of_type.tests.ts} +3 -3
- package/types/specs/{flattened_type_defs_of.tests.ts → flattened_types_of_type.tests.ts} +82 -34
- package/types/specs/flattened_validators_of_validating_type.tests.ts +47 -0
- package/types/specs/flattened_values_of_type.tests.ts +39 -0
- package/types/specs/{partial_type_def_of.tests.ts → partial_type_of_type.tests.ts} +11 -11
- package/types/specs/{json_paths_of.tests.ts → paths_of_type.tests.ts} +47 -47
- package/types/specs/{readonly_type_def_of.tests.ts → readonly_type_of_type.tests.ts} +14 -14
- package/types/specs/type_of_type.tests.ts +60 -0
- package/types/specs/{value_type_of.tests.ts → value_of_type.tests.ts} +15 -15
- package/types/specs/{value_to_type_paths_of.tests.ts → value_to_type_paths_of_type.tests.ts} +26 -25
- package/types/specs/value_types_of_discriminated_union.tests.ts +6 -6
- package/types/strict_definitions.ts +3 -3
- package/types/type_of_type.ts +178 -0
- package/types/validating_definitions.ts +109 -0
- package/types/validating_type_def_with_error.ts +93 -0
- package/types/value_of_type.ts +84 -0
- package/types/{value_to_type_paths_of.ts → value_to_type_paths_of_type.ts} +30 -29
- package/types/value_types_of_discriminated_union.ts +4 -3
- package/validation/errors_of_validators.ts +10 -0
- package/validation/specs/errors_of_validators.tests.ts +20 -0
- package/validation/specs/validators_of_values.tests.ts +68 -0
- package/validation/validator.ts +103 -0
- package/validation/validators/defined_validator.ts +22 -0
- package/validation/validators/minimum_string_length_validator.ts +36 -0
- package/validation/validators_of_values.ts +17 -0
- package/.out/transformers/flatteners/flatten_accessors_of.d.ts +0 -5
- package/.out/transformers/flatteners/flatten_accessors_of.js +0 -11
- package/.out/transformers/flatteners/flatten_type_defs_of.js +0 -7
- package/.out/transformers/flatteners/flatten_value_types_of.d.ts +0 -3
- package/.out/transformers/flatteners/flatten_value_types_of.js +0 -7
- package/.out/transformers/flatteners/specs/flatten_type_defs_of.tests.js +0 -17
- package/.out/types/flattened_accessors_of.d.ts +0 -9
- package/.out/types/flattened_value_types_of.d.ts +0 -6
- package/.out/types/json_path_of.d.ts +0 -1
- package/.out/types/readonly_type_def_of.d.ts +0 -29
- package/.out/types/specs/flattened_value_types_of.tests.js +0 -11
- package/.out/types/value_type_of.d.ts +0 -24
- package/transformers/flatteners/specs/flatten_type_defs_of.tests.ts +0 -26
- package/types/flattened_value_types_of.ts +0 -11
- package/types/readonly_type_def_of.ts +0 -53
- package/types/specs/flattened_value_types_of.tests.ts +0 -21
- package/types/value_type_of.ts +0 -84
- /package/.out/transformers/flatteners/specs/{flatten_accessors_of.tests.d.ts → flatten_accessors_of_type.tests.d.ts} +0 -0
- /package/.out/transformers/flatteners/specs/{flatten_type_def_to.tests.d.ts → flatten_type_to.tests.d.ts} +0 -0
- /package/.out/transformers/flatteners/specs/{flatten_type_defs_of.tests.d.ts → flatten_types_of_type.tests.d.ts} +0 -0
- /package/.out/transformers/flatteners/specs/{flatten_value_type_to.tests.d.ts → flatten_validation_errors_of_type.tests.d.ts} +0 -0
- /package/.out/transformers/flatteners/specs/{flatten_value_types_of.tests.d.ts → flatten_value_to.tests.d.ts} +0 -0
- /package/.out/{types/flattened_accessors_of.js → transformers/flatteners/specs/flatten_values_of_type.tests.d.ts} +0 -0
- /package/.out/types/{flattened_type_defs_of.js → flattened_accessors_of_type.js} +0 -0
- /package/.out/types/{flattened_value_types_of.js → flattened_types_of_type.js} +0 -0
- /package/.out/types/{json_path_of.js → flattened_types_of_validating_type.js} +0 -0
- /package/.out/types/{json_paths_of.js → flattened_validators_of_validating_type.js} +0 -0
- /package/.out/types/{partial_type_def_of.js → flattened_values_of_type.js} +0 -0
- /package/.out/types/{mobx_value_type_of.js → mobx_value_of_type.js} +0 -0
- /package/.out/types/{readonly_type_def_of.js → partial_type_of_type.js} +0 -0
- /package/.out/types/{specs/flattened_accessors_of.tests.d.ts → path_of.js} +0 -0
- /package/.out/types/{specs/flattened_type_defs_of.tests.d.ts → paths_of_type.js} +0 -0
- /package/.out/types/{specs/flattened_value_types_of.tests.d.ts → readonly_type_of_type.js} +0 -0
- /package/.out/types/specs/{json_paths_of.tests.d.ts → flattened_accessors_of_type.tests.d.ts} +0 -0
- /package/.out/types/specs/{partial_type_def_of.tests.d.ts → flattened_types_of_type.tests.d.ts} +0 -0
- /package/.out/types/specs/{readonly_type_def_of.tests.d.ts → flattened_validators_of_validating_type.tests.d.ts} +0 -0
- /package/.out/types/specs/{value_to_type_paths_of.tests.d.ts → flattened_values_of_type.tests.d.ts} +0 -0
- /package/.out/types/specs/{value_type_of.tests.d.ts → partial_type_of_type.tests.d.ts} +0 -0
- /package/.out/types/{value_to_type_paths_of.js → specs/paths_of_type.tests.d.ts} +0 -0
- /package/.out/types/{value_type_of.js → specs/readonly_type_of_type.tests.d.ts} +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -12,61 +12,61 @@ declare enum TypeDefType {
|
|
|
12
12
|
Object = 4,
|
|
13
13
|
Union = 5
|
|
14
14
|
}
|
|
15
|
-
type AnyTypeDef$
|
|
15
|
+
type AnyTypeDef$2 = any;
|
|
16
16
|
type LiteralTypeDef<V = any> = {
|
|
17
17
|
readonly type: TypeDefType.Literal;
|
|
18
18
|
readonly valuePrototype: [V];
|
|
19
19
|
};
|
|
20
|
-
type ListTypeDef<E extends TypeDef = AnyTypeDef$
|
|
20
|
+
type ListTypeDef<E extends TypeDef = AnyTypeDef$2> = {
|
|
21
21
|
readonly type: TypeDefType.List;
|
|
22
22
|
readonly elements: E;
|
|
23
23
|
};
|
|
24
24
|
type RecordKeyType = string | number;
|
|
25
|
-
type RecordTypeDef<K extends RecordKeyType = RecordKeyType, V extends TypeDef | undefined = AnyTypeDef$
|
|
25
|
+
type RecordTypeDef<K extends RecordKeyType = RecordKeyType, V extends TypeDef | undefined = AnyTypeDef$2> = {
|
|
26
26
|
readonly type: TypeDefType.Record;
|
|
27
27
|
readonly keyPrototype: K;
|
|
28
28
|
readonly valueTypeDef: V;
|
|
29
29
|
};
|
|
30
|
-
type ObjectFieldKey = string
|
|
30
|
+
type ObjectFieldKey = string;
|
|
31
31
|
type ObjectTypeDefFields = {
|
|
32
|
-
[Key: ObjectFieldKey]: AnyTypeDef$
|
|
32
|
+
[Key: ObjectFieldKey]: AnyTypeDef$2;
|
|
33
33
|
};
|
|
34
34
|
type ObjectTypeDef<Fields extends ObjectTypeDefFields = ObjectTypeDefFields> = {
|
|
35
35
|
readonly type: TypeDefType.Object;
|
|
36
36
|
readonly fields: Fields;
|
|
37
37
|
};
|
|
38
38
|
type UnionKey = string;
|
|
39
|
-
type UnionTypeDef<D extends string | null = string | null, U extends Readonly<Record<UnionKey, AnyTypeDef$
|
|
39
|
+
type UnionTypeDef<D extends string | null = string | null, U extends Readonly<Record<UnionKey, AnyTypeDef$2>> = Readonly<Record<UnionKey, AnyTypeDef$2>>> = {
|
|
40
40
|
readonly discriminator: D;
|
|
41
41
|
readonly type: TypeDefType.Union;
|
|
42
42
|
readonly unions: U;
|
|
43
43
|
};
|
|
44
44
|
|
|
45
|
-
type
|
|
46
|
-
readonly definition:
|
|
45
|
+
type ReadonlyTypeOfType<T extends Type> = {
|
|
46
|
+
readonly definition: ReadonlyOfTypeDef<T['definition']>;
|
|
47
47
|
};
|
|
48
|
-
type
|
|
49
|
-
type
|
|
50
|
-
type
|
|
48
|
+
type ReadonlyOfTypeDef<T extends TypeDef> = T extends LiteralTypeDef ? ReadonlyOfLiteralTypeDef<T> : T extends ListTypeDef ? ReadonlyOfListTypeDef<T> : T extends RecordTypeDef ? ReadonlyOfRecordTypeDef<T> : T extends ObjectTypeDef ? ReadonlyOfObjectTypeDef<T> : T extends UnionTypeDef ? ReadonlyOfUnionTypeDef<T> : never;
|
|
49
|
+
type ReadonlyOfLiteralTypeDef<T extends LiteralTypeDef> = T;
|
|
50
|
+
type ReadonlyOfListTypeDef<T extends ListTypeDef> = {
|
|
51
51
|
readonly type: T['type'];
|
|
52
|
-
readonly elements:
|
|
52
|
+
readonly elements: ReadonlyOfTypeDef<T['elements']>;
|
|
53
53
|
};
|
|
54
|
-
type
|
|
54
|
+
type ReadonlyOfRecordTypeDef<T extends RecordTypeDef> = {
|
|
55
55
|
readonly type: T['type'];
|
|
56
56
|
readonly keyPrototype: T['keyPrototype'];
|
|
57
|
-
readonly valueTypeDef: undefined extends T['valueTypeDef'] ?
|
|
57
|
+
readonly valueTypeDef: undefined extends T['valueTypeDef'] ? ReadonlyOfTypeDef<Exclude<T['valueTypeDef'], undefined>> | undefined : ReadonlyOfTypeDef<T['valueTypeDef']>;
|
|
58
58
|
};
|
|
59
|
-
type
|
|
59
|
+
type ReadonlyOfObjectTypeDef<T extends ObjectTypeDef> = T extends ObjectTypeDef<infer Fields> ? {
|
|
60
60
|
readonly type: T['type'];
|
|
61
61
|
readonly fields: {
|
|
62
|
-
readonly [K in keyof Fields]:
|
|
62
|
+
readonly [K in keyof Fields]: ReadonlyOfTypeDef<Fields[K]>;
|
|
63
63
|
};
|
|
64
64
|
} : never;
|
|
65
|
-
type
|
|
65
|
+
type ReadonlyOfUnionTypeDef<T extends UnionTypeDef> = T extends UnionTypeDef<infer D, infer Unions> ? {
|
|
66
66
|
readonly type: T['type'];
|
|
67
67
|
readonly discriminator: D;
|
|
68
68
|
readonly unions: {
|
|
69
|
-
readonly [K in keyof Unions]:
|
|
69
|
+
readonly [K in keyof Unions]: ReadonlyOfTypeDef<Unions[K]>;
|
|
70
70
|
};
|
|
71
71
|
} : never;
|
|
72
72
|
|
|
@@ -74,28 +74,28 @@ type StrictType<T extends StrictTypeDef = StrictTypeDef> = {
|
|
|
74
74
|
readonly definition: T;
|
|
75
75
|
};
|
|
76
76
|
type StrictTypeDef = StrictLiteralTypeDef | StrictListTypeDef | StrictRecordTypeDef | StrictObjectTypeDef | StrictUnionTypeDef;
|
|
77
|
-
type AnyTypeDef = any;
|
|
77
|
+
type AnyTypeDef$1 = any;
|
|
78
78
|
type StrictLiteralTypeDef<V = any> = {
|
|
79
79
|
readonly type: TypeDefType.Literal;
|
|
80
80
|
readonly valuePrototype: [V];
|
|
81
81
|
};
|
|
82
|
-
type StrictListTypeDef<E extends StrictTypeDef = AnyTypeDef> = {
|
|
82
|
+
type StrictListTypeDef<E extends StrictTypeDef = AnyTypeDef$1> = {
|
|
83
83
|
readonly type: TypeDefType.List;
|
|
84
84
|
readonly elements: E;
|
|
85
85
|
};
|
|
86
|
-
type StrictRecordTypeDef<K extends RecordKeyType = RecordKeyType, V extends StrictTypeDef | undefined = AnyTypeDef> = {
|
|
86
|
+
type StrictRecordTypeDef<K extends RecordKeyType = RecordKeyType, V extends StrictTypeDef | undefined = AnyTypeDef$1> = {
|
|
87
87
|
readonly type: TypeDefType.Record;
|
|
88
88
|
readonly keyPrototype: K;
|
|
89
89
|
readonly valueTypeDef: V;
|
|
90
90
|
};
|
|
91
|
-
type
|
|
92
|
-
[Key: ObjectFieldKey]: AnyTypeDef;
|
|
91
|
+
type StrictObjectTypeDefFields = {
|
|
92
|
+
[Key: ObjectFieldKey]: AnyTypeDef$1;
|
|
93
93
|
};
|
|
94
|
-
type StrictObjectTypeDef<Fields extends
|
|
94
|
+
type StrictObjectTypeDef<Fields extends StrictObjectTypeDefFields = StrictObjectTypeDefFields> = {
|
|
95
95
|
readonly type: TypeDefType.Object;
|
|
96
96
|
readonly fields: Fields;
|
|
97
97
|
};
|
|
98
|
-
type StrictUnionTypeDef<D extends string | null = string | null, U extends Readonly<Record<UnionKey, AnyTypeDef>> = Readonly<Record<UnionKey, AnyTypeDef>>> = D extends null ? IsStrictUnion<U> extends true ? {
|
|
98
|
+
type StrictUnionTypeDef<D extends string | null = string | null, U extends Readonly<Record<UnionKey, AnyTypeDef$1>> = Readonly<Record<UnionKey, AnyTypeDef$1>>> = D extends null ? IsStrictUnion<U> extends true ? {
|
|
99
99
|
readonly discriminator: null;
|
|
100
100
|
readonly type: TypeDefType.Union;
|
|
101
101
|
readonly unions: U;
|
|
@@ -104,37 +104,37 @@ type StrictUnionTypeDef<D extends string | null = string | null, U extends Reado
|
|
|
104
104
|
readonly type: TypeDefType.Union;
|
|
105
105
|
readonly unions: U;
|
|
106
106
|
};
|
|
107
|
-
type IsStrictUnion<U extends Readonly<Record<UnionKey, AnyTypeDef>>> = IsEqual<U, Simplify<{
|
|
107
|
+
type IsStrictUnion<U extends Readonly<Record<UnionKey, AnyTypeDef$1>>> = IsEqual<U, Simplify<{
|
|
108
108
|
readonly [K in keyof Omit<U, '0'> as U[K] extends StrictLiteralTypeDef ? K : never]: U[K];
|
|
109
109
|
} & (U extends {
|
|
110
|
-
readonly ['0']: AnyTypeDef;
|
|
110
|
+
readonly ['0']: AnyTypeDef$1;
|
|
111
111
|
} ? {
|
|
112
112
|
readonly ['0']: U['0'];
|
|
113
113
|
} : {})>>;
|
|
114
114
|
|
|
115
|
-
type
|
|
116
|
-
type
|
|
117
|
-
type
|
|
118
|
-
type
|
|
119
|
-
type
|
|
120
|
-
readonly [k in F['keyPrototype']]?:
|
|
115
|
+
type ValueOfType<T, Extra = {}> = T extends Type ? ValueOfTypeDef<T['definition'], Extra> : never;
|
|
116
|
+
type ValueOfTypeDef<F extends TypeDef, Extra = {}> = F extends LiteralTypeDef ? ValueOfLiteralTypeDef<F> : F extends ListTypeDef ? ValueOfListTypeDef<F, Extra> : F extends RecordTypeDef ? ValueOfRecordTypeDef<F, Extra> : F extends ObjectTypeDef ? ValueOfObjectTypeDef<F, Extra> : F extends UnionTypeDef ? ValueOfUnionTypeDef<F, Extra> : never;
|
|
117
|
+
type ValueOfLiteralTypeDef<F extends LiteralTypeDef> = F['valuePrototype'][number];
|
|
118
|
+
type ValueOfListTypeDef<F extends ListTypeDef, Extra> = IsFieldReadonly<F, 'elements'> extends true ? readonly ValueOfTypeDef<F['elements'], Extra>[] & Extra : ValueOfTypeDef<F['elements'], Extra>[] & Extra;
|
|
119
|
+
type ValueOfRecordTypeDef<F extends RecordTypeDef, Extra> = undefined extends F['valueTypeDef'] ? IsFieldReadonly<F, 'valueTypeDef'> extends true ? {
|
|
120
|
+
readonly [k in F['keyPrototype']]?: ValueOfTypeDef<F['valueTypeDef'], Extra>;
|
|
121
121
|
} : {
|
|
122
|
-
[k in F['keyPrototype']]?:
|
|
122
|
+
[k in F['keyPrototype']]?: ValueOfTypeDef<F['valueTypeDef'], Extra>;
|
|
123
123
|
} : IsFieldReadonly<F, 'valueTypeDef'> extends true ? {
|
|
124
|
-
readonly [k in F['keyPrototype']]:
|
|
124
|
+
readonly [k in F['keyPrototype']]: ValueOfTypeDef<F['valueTypeDef'], Extra>;
|
|
125
125
|
} : {
|
|
126
|
-
[k in F['keyPrototype']]:
|
|
126
|
+
[k in F['keyPrototype']]: ValueOfTypeDef<F['valueTypeDef'], Extra>;
|
|
127
127
|
};
|
|
128
|
-
type
|
|
129
|
-
[K in keyof Fields]:
|
|
128
|
+
type ValueOfObjectTypeDef<F extends ObjectTypeDef, Extra> = F extends ObjectTypeDef<infer Fields> ? {
|
|
129
|
+
[K in keyof Fields]: ValueOfTypeDef<Fields[K], Extra>;
|
|
130
130
|
} & Extra : never;
|
|
131
|
-
type
|
|
132
|
-
[K in keyof U]:
|
|
131
|
+
type ValueOfUnionTypeDef<F extends UnionTypeDef, Extra> = F extends UnionTypeDef<infer D, infer U> ? D extends string ? {
|
|
132
|
+
[K in keyof U]: ValueOfTypeDef<U[K], Extra> & Readonly<Record<D, K>>;
|
|
133
133
|
}[keyof U] : {
|
|
134
|
-
[K in keyof U]:
|
|
134
|
+
[K in keyof U]: ValueOfTypeDef<U[K], Extra>;
|
|
135
135
|
}[keyof U] : never;
|
|
136
136
|
|
|
137
|
-
declare function copy<T extends StrictType>(t: T, proto:
|
|
137
|
+
declare function copy<T extends StrictType>(t: T, proto: ValueOfType<ReadonlyTypeOfType<T>>): ValueOfType<T>;
|
|
138
138
|
|
|
139
139
|
declare const MOBX_OBSERVABLE_KEY = "___mobx_observable";
|
|
140
140
|
type MobxObservable<T = {}> = {
|
|
@@ -143,159 +143,410 @@ type MobxObservable<T = {}> = {
|
|
|
143
143
|
type NonMobxObservable<T = {}> = {
|
|
144
144
|
[MOBX_OBSERVABLE_KEY]?: never;
|
|
145
145
|
} & T;
|
|
146
|
-
type
|
|
146
|
+
type MobxValueOfType<T extends Type> = ValueOfType<T, MobxObservable>;
|
|
147
147
|
|
|
148
|
-
declare function mobxCopy<T extends StrictType>(t: T, proto:
|
|
148
|
+
declare function mobxCopy<T extends StrictType>(t: T, proto: ValueOfType<ReadonlyTypeOfType<T>>): MobxValueOfType<T>;
|
|
149
149
|
|
|
150
150
|
type StartingDepth = 8;
|
|
151
151
|
type Depths = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
|
|
152
152
|
|
|
153
|
-
type
|
|
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
|
|
156
|
-
type InternalFlattenedTypeDefsOf<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, Qualifier extends string, Depth extends number> = {
|
|
157
157
|
readonly [K in Path]: Type<T>;
|
|
158
|
-
} & InternalFlattenedTypeDefsOfChildren<T, SegmentOverride, Path, Qualifier, Depth>;
|
|
159
|
-
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;
|
|
160
|
-
type InternalFlattenedTypeDefsOfLiteralChildren = {};
|
|
161
|
-
type InternalFlattenedTypeDefsOfListChildren<T extends ListTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf<T['elements'], SegmentOverride,
|
|
162
|
-
type InternalFlattenedTypeDefsOfRecordChildren<T extends RecordTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf<T['valueTypeDef'], SegmentOverride,
|
|
163
|
-
type InternalFlattenedTypeDefsOfObjectChildren<T extends ObjectTypeDef, SegmentOverride extends string | null, Path extends string, Qualifier extends string, Depth extends number> = T extends ObjectTypeDef<infer Fields> ?
|
|
164
|
-
readonly [K in keyof Fields]-?:
|
|
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;
|
|
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<{
|
|
164
|
+
readonly [K in keyof Fields]-?: undefined extends Fields[K] ? InternalFlattenedTypeDefsOf$1<UnionTypeDef<null, {
|
|
165
|
+
readonly '0': Exclude<Fields[K], undefined>;
|
|
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>;
|
|
165
168
|
}[keyof Fields]> : never : never;
|
|
166
|
-
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<{
|
|
167
|
-
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren<Unions[K], SegmentOverride, Path, '', Depth>;
|
|
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>;
|
|
168
171
|
}[keyof Unions]> : UnionToIntersection<{
|
|
169
|
-
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren<Unions[K], SegmentOverride, Path, `${Qualifier}${K}:`, Depth>;
|
|
172
|
+
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren$1<Unions[K], SegmentOverride, Path, `${Qualifier}${K}:`, Depth>;
|
|
170
173
|
}[keyof Unions]> : never : never;
|
|
171
174
|
|
|
172
|
-
type
|
|
173
|
-
[K in keyof Flattened]:
|
|
175
|
+
type FlattenedValuesOfType<T extends Type, SegmentOverride extends string | null = null, Flattened extends Readonly<Record<string, Type>> = FlattenedTypesOfType<T, SegmentOverride>> = {
|
|
176
|
+
[K in keyof Flattened]: ValueOfType<Flattened[K], {}>;
|
|
174
177
|
};
|
|
175
178
|
|
|
176
179
|
type Accessor<T = any> = {
|
|
177
180
|
readonly value: T;
|
|
178
181
|
set(v: T): void;
|
|
179
182
|
};
|
|
180
|
-
type
|
|
183
|
+
type FlattenedAccessorsOfType<T extends Type, Flattened extends Readonly<Record<string, Accessor>> = FlattenedValuesOfType<T>> = {
|
|
181
184
|
readonly [K in keyof Flattened]: Accessor<Flattened[K]>;
|
|
182
185
|
};
|
|
183
186
|
|
|
184
187
|
type AnyValueType = any;
|
|
185
188
|
type Setter<V> = (v: V) => void;
|
|
186
189
|
type Mapper<R> = (t: StrictTypeDef, v: AnyValueType, setter: Setter<AnyValueType>, typePath: string, valuePath: string) => R;
|
|
187
|
-
declare function
|
|
188
|
-
declare function getUnionTypeDef<T extends UnionTypeDef>(typeDef: T, v:
|
|
190
|
+
declare function flattenValueTo<T extends StrictType, M, R extends Readonly<Record<string, M>>>({ definition }: T, v: ValueOfType<T>, setter: Setter<ValueOfType<T>>, mapper: Mapper<M>): R;
|
|
191
|
+
declare function getUnionTypeDef<T extends UnionTypeDef>(typeDef: T, v: ValueOfType<ReadonlyTypeOfType<{
|
|
189
192
|
definition: T;
|
|
190
193
|
}>>): any;
|
|
191
194
|
|
|
192
|
-
declare function
|
|
195
|
+
declare function flattenAccessorsOfType<T extends Type, R extends Readonly<Record<string, Accessor<any>>> = FlattenedAccessorsOfType<T>>(t: T, value: ValueOfType<T>, setValue: Setter<ValueOfType<T>>): R;
|
|
193
196
|
|
|
194
|
-
declare function flattenJsonValueToTypePathsOf<T extends Type, R extends Record<string, string | number | symbol>>(t: T, value:
|
|
197
|
+
declare function flattenJsonValueToTypePathsOf<T extends Type, R extends Record<string, string | number | symbol>>(t: T, value: ValueOfType<T>): R;
|
|
195
198
|
|
|
196
|
-
declare function
|
|
199
|
+
declare function flattenTypesOfType<T extends StrictType>(t: T): Record<string, Type>;
|
|
200
|
+
|
|
201
|
+
type ValidatingType<T extends ValidatingTypeDef = ValidatingTypeDef> = {
|
|
202
|
+
readonly definition: T;
|
|
203
|
+
};
|
|
204
|
+
type Rule<E = any, V = any> = (v: V) => E | null;
|
|
205
|
+
type ErrorOfValidatingTypeDef<T extends ValidatingTypeDef> = T extends ValidatingTypeDef<infer E> ? E : never;
|
|
206
|
+
type ValidatingTypeDef<E = any> = ValidatingLiteralTypeDef<E> | ValidatingListTypeDef<E> | ValidatingRecordTypeDef<E> | ValidatingObjectTypeDef<E> | ValidatingUnionTypeDef<E>;
|
|
207
|
+
type AnyTypeDef = any;
|
|
208
|
+
type ValidatingLiteralTypeDef<E = any, V = any> = {
|
|
209
|
+
readonly type: TypeDefType.Literal;
|
|
210
|
+
readonly valuePrototype: [V];
|
|
211
|
+
readonly rule: Rule<E>;
|
|
212
|
+
readonly required: boolean;
|
|
213
|
+
readonly readonly: boolean;
|
|
214
|
+
};
|
|
215
|
+
type ValidatingListTypeDef<E = any, Ele extends ValidatingTypeDef = AnyTypeDef> = {
|
|
216
|
+
readonly type: TypeDefType.List;
|
|
217
|
+
readonly elements: Ele;
|
|
218
|
+
readonly rule: Rule<E>;
|
|
219
|
+
readonly required: boolean;
|
|
220
|
+
readonly readonly: boolean;
|
|
221
|
+
};
|
|
222
|
+
type ValidatingRecordTypeDef<E = any, K extends RecordKeyType = RecordKeyType, V extends ValidatingTypeDef | undefined = AnyTypeDef> = {
|
|
223
|
+
readonly type: TypeDefType.Record;
|
|
224
|
+
readonly keyPrototype: K;
|
|
225
|
+
readonly valueTypeDef: V;
|
|
226
|
+
readonly rule: Rule<E>;
|
|
227
|
+
readonly required: boolean;
|
|
228
|
+
readonly readonly: boolean;
|
|
229
|
+
};
|
|
230
|
+
type ValidatingObjectTypeDefFields = {
|
|
231
|
+
[Key: ObjectFieldKey]: AnyTypeDef;
|
|
232
|
+
};
|
|
233
|
+
type ValidatingObjectTypeDef<E = any, Fields extends ValidatingObjectTypeDefFields = ValidatingObjectTypeDefFields> = {
|
|
234
|
+
readonly type: TypeDefType.Object;
|
|
235
|
+
readonly fields: Fields;
|
|
236
|
+
readonly rule: Rule<E>;
|
|
237
|
+
readonly required: boolean;
|
|
238
|
+
readonly readonly: boolean;
|
|
239
|
+
};
|
|
240
|
+
type ValidatingUnionTypeDef<E = any, D extends string | null = string | null, U extends Readonly<Record<UnionKey, AnyTypeDef>> = Readonly<Record<UnionKey, AnyTypeDef>>> = {
|
|
241
|
+
readonly discriminator: D;
|
|
242
|
+
readonly type: TypeDefType.Union;
|
|
243
|
+
readonly unions: U;
|
|
244
|
+
readonly rule: Rule<E>;
|
|
245
|
+
readonly required: boolean;
|
|
246
|
+
readonly readonly: boolean;
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
type FlattenedTypesOfValidatingType<T extends Type, SegmentOverride extends string | null, Path extends string = '$', Depth extends number = StartingDepth> = InternalFlattenedTypeDefsOf<T['definition'], SegmentOverride, Path, '', Depth>;
|
|
250
|
+
type InternalFlattenedTypeDefsOf<T extends TypeDef, SegmentOverride extends string | null, Path extends string, Qualifier extends string, Depth extends number> = {
|
|
251
|
+
readonly [K in Path]: Type<T>;
|
|
252
|
+
} & InternalFlattenedTypeDefsOfChildren<T, SegmentOverride, Path, Qualifier, Depth>;
|
|
253
|
+
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;
|
|
254
|
+
type InternalFlattenedTypeDefsOfLiteralChildren = {};
|
|
255
|
+
type InternalFlattenedTypeDefsOfListChildren<T extends ValidatingListTypeDef, SegmentOverride extends string | null, Path extends string, Depth extends number> = InternalFlattenedTypeDefsOf<T['elements'], SegmentOverride, PathOf<Path, number, SegmentOverride>, '', Depth>;
|
|
256
|
+
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>;
|
|
257
|
+
type InternalFlattenedTypeDefsOfObjectChildren<T extends ValidatingObjectTypeDef, SegmentOverride extends string | null, Path extends string, Qualifier extends string, Depth extends number> = T extends ValidatingObjectTypeDef<infer _E, infer Fields> ? keyof Fields extends string ? UnionToIntersection<{
|
|
258
|
+
readonly [K in keyof Fields]-?: undefined extends Fields[K] ? InternalFlattenedTypeDefsOf<ValidatingUnionTypeDef<ErrorOfValidatingTypeDef<Exclude<Fields[K], undefined>>, null, {
|
|
259
|
+
readonly '0': Exclude<Fields[K], undefined>;
|
|
260
|
+
readonly '1': ValidatingLiteralTypeDef<undefined>;
|
|
261
|
+
}>, SegmentOverride, PathOf<Path, `${Qualifier}${K}`, null>, '', Depth> : InternalFlattenedTypeDefsOf<Exclude<Fields[K], undefined>, SegmentOverride, PathOf<Path, `${Qualifier}${K}`, null>, '', Depth>;
|
|
262
|
+
}[keyof Fields]> : never : never;
|
|
263
|
+
type InternalFlattenedTypeDefsOfUnionChildren<T extends ValidatingUnionTypeDef, SegmentOverride extends string | null, Path extends string, Qualifier extends string, Depth extends number> = T extends ValidatingUnionTypeDef<infer _E, infer D, infer Unions> ? keyof Unions extends string ? D extends null ? UnionToIntersection<{
|
|
264
|
+
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren<Unions[K], SegmentOverride, Path, '', Depth>;
|
|
265
|
+
}[keyof Unions]> : UnionToIntersection<{
|
|
266
|
+
readonly [K in keyof Unions]: InternalFlattenedTypeDefsOfChildren<Unions[K], SegmentOverride, Path, `${Qualifier}${K}:`, Depth>;
|
|
267
|
+
}[keyof Unions]> : never : never;
|
|
268
|
+
|
|
269
|
+
type FunctionalValidator<V = any, E = any, ValuePath extends string = any, Context = any> = (v: V, valuePath: ValuePath, context: Context) => E | null;
|
|
270
|
+
type AnnotatedValidator<V = any, E = any, ValuePath extends string = any, Context = any> = {
|
|
271
|
+
readonly validate: (v: V, valuePath: ValuePath, context: Context) => E | null;
|
|
272
|
+
readonly annotations: (valuePath: ValuePath, context: Context) => {
|
|
273
|
+
readonly required: boolean;
|
|
274
|
+
readonly readonly: boolean;
|
|
275
|
+
};
|
|
276
|
+
};
|
|
277
|
+
type Validator<V = any, E = any, ValuePath extends string = any, Context = any> = FunctionalValidator<V, E, ValuePath, Context> | AnnotatedValidator<V, E, ValuePath, Context>;
|
|
278
|
+
type ErrorOfValidator<V extends Validator> = V extends Validator<infer _V, infer E> ? E : never;
|
|
279
|
+
type ValidationError<Type extends string, Data = {}> = Simplify<{
|
|
280
|
+
type: Type;
|
|
281
|
+
} & Data>;
|
|
282
|
+
declare function isFunctionalValidator(v: Validator): v is FunctionalValidator;
|
|
283
|
+
declare function isAnnotatedValidator(v: Validator): v is AnnotatedValidator;
|
|
284
|
+
declare function validate<V = any, E = any, ValuePath extends string = any, Context = any>(validator: Validator<V, E, ValuePath, Context>, v: V, valuePath: ValuePath, context: Context): E | null;
|
|
285
|
+
declare function annotations<V = any, E = any, ValuePath extends string = any, Context = any>(validator: Validator<V, E, ValuePath, Context>, valuePath: ValuePath, context: Context): {
|
|
286
|
+
readonly required: boolean;
|
|
287
|
+
readonly readonly: boolean;
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
type ValidatorOfValidatingType<T extends ValidatingTypeDef, ValuePath extends string, Context> = T extends ValidatingTypeDef<infer E> ? Validator<ValueOfTypeDef<ReadonlyOfTypeDef<T>>, E, ValuePath, Context> : never;
|
|
291
|
+
type FlattenedValidatorsOfValidatingType<T extends ValidatingType, TypePathsToValuePaths extends Readonly<Record<keyof FlattenedTypes, string>>, FlattenedTypes extends Readonly<Record<string, ValidatingType>> = FlattenedTypesOfType<T, '*'>, Context = ValueOfType<ReadonlyTypeOfType<T>>> = {
|
|
292
|
+
[K in keyof FlattenedTypes as ErrorOfValidatingTypeDef<FlattenedTypes[K]['definition']> extends never ? never : K]: ValidatorOfValidatingType<FlattenedTypes[K]['definition'], TypePathsToValuePaths[K], Context>;
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
declare function flattenValidatorsOfValidatingType<T extends ValidatingType, TypePathsToValuePaths extends Readonly<Record<keyof FlattenedTypes, string>>, FlattenedTypes extends Readonly<Record<string, ValidatingType>> = FlattenedTypesOfValidatingType<T, '*'>>(type: T): FlattenedValidatorsOfValidatingType<T, TypePathsToValuePaths, FlattenedTypes>;
|
|
296
|
+
|
|
297
|
+
declare function flattenValuesOfType<T extends Type>(typeDef: Type, value: ValueOfType<T>): Readonly<Record<string, any>>;
|
|
197
298
|
|
|
198
299
|
declare function jsonPath(prefix: string, segment: number | string, qualifier?: string): string;
|
|
199
300
|
declare function jsonPathPop(path: string): [string, string] | null;
|
|
200
301
|
|
|
201
|
-
declare function valuePathToTypePath<
|
|
302
|
+
declare function valuePathToTypePath<ValuePathsToTypePaths extends Record<string, string>, ValuePath extends keyof ValuePathsToTypePaths>({ definition: typeDef }: Type, valuePath: ValuePath, allowMissingPaths?: boolean): ValuePathsToTypePaths[ValuePath];
|
|
202
303
|
|
|
203
|
-
|
|
304
|
+
type TypeOfType<T extends Type> = T extends Type<infer D> ? {
|
|
305
|
+
readonly definition: TypeDefOfTypeDef<D>;
|
|
306
|
+
} : never;
|
|
307
|
+
type TypeDefOfTypeDef<D extends TypeDef> = D extends LiteralTypeDef ? TypeDefOfLiteralTypeDef<D> : D extends ListTypeDef ? TypeDefOfListTypeDef<D> : D extends RecordTypeDef ? TypeDefOfRecordTypeDef<D> : D extends ObjectTypeDef ? TypeDefOfObjectTypeDef<D> : D extends UnionTypeDef ? TypeDefOfUnionTypeDef<D> : never;
|
|
308
|
+
type TypeDefOfLiteralTypeDef<T extends LiteralTypeDef> = T extends LiteralTypeDef<infer V> ? {
|
|
309
|
+
readonly type: TypeDefType.Literal;
|
|
310
|
+
readonly valuePrototype: [V];
|
|
311
|
+
} : never;
|
|
312
|
+
type TypeDefOfListTypeDef<T extends ListTypeDef> = T extends ListTypeDef<infer E> ? IsFieldReadonly<T, 'elements'> extends true ? {
|
|
313
|
+
readonly type: TypeDefType.List;
|
|
314
|
+
readonly elements: TypeDefOfTypeDef<E>;
|
|
315
|
+
} : {
|
|
316
|
+
readonly type: TypeDefType.List;
|
|
317
|
+
elements: TypeDefOfTypeDef<E>;
|
|
318
|
+
} : never;
|
|
319
|
+
type TypeDefOfRecordTypeDef<T extends RecordTypeDef> = T extends RecordTypeDef<infer K, infer V> ? undefined extends V ? IsFieldReadonly<T, 'valueTypeDef'> extends true ? {
|
|
320
|
+
readonly type: TypeDefType.Record;
|
|
321
|
+
readonly keyPrototype: K;
|
|
322
|
+
readonly valueTypeDef: TypeDefOfTypeDef<NonNullable<V>> | undefined;
|
|
323
|
+
} : {
|
|
324
|
+
readonly type: TypeDefType.Record;
|
|
325
|
+
readonly keyPrototype: K;
|
|
326
|
+
valueTypeDef: TypeDefOfTypeDef<NonNullable<V>> | undefined;
|
|
327
|
+
} : IsFieldReadonly<T, 'valueTypeDef'> extends true ? {
|
|
328
|
+
readonly type: TypeDefType.Record;
|
|
329
|
+
readonly keyPrototype: K;
|
|
330
|
+
readonly valueTypeDef: TypeDefOfTypeDef<NonNullable<V>>;
|
|
331
|
+
} : {
|
|
332
|
+
readonly type: TypeDefType.Record;
|
|
333
|
+
readonly keyPrototype: K;
|
|
334
|
+
valueTypeDef: TypeDefOfTypeDef<NonNullable<V>>;
|
|
335
|
+
} : never;
|
|
336
|
+
type TypeDefOfObjectTypeDef<T extends ObjectTypeDef> = T extends ObjectTypeDef<infer Fields> ? {
|
|
337
|
+
readonly type: TypeDefType.Object;
|
|
338
|
+
readonly fields: {
|
|
339
|
+
[K in keyof Fields as K extends ObjectFieldKey ? K : never]: TypeDefOfTypeDef<NonNullable<Fields[K]>>;
|
|
340
|
+
};
|
|
341
|
+
} : never;
|
|
342
|
+
type TypeDefOfUnionTypeDef<T extends UnionTypeDef> = T extends UnionTypeDef<infer D, infer U> ? {
|
|
343
|
+
readonly type: TypeDefType.Union;
|
|
344
|
+
readonly discriminator: D;
|
|
345
|
+
readonly unions: {
|
|
346
|
+
[K in keyof U]: TypeDefOfTypeDef<U[K]>;
|
|
347
|
+
};
|
|
348
|
+
} : never;
|
|
349
|
+
|
|
350
|
+
type ValidatingTypeDefWithError<T extends ValidatingTypeDef, E> = T extends ValidatingLiteralTypeDef ? ValidatingLiteralTypeDefWithError<T, E> : T extends ValidatingListTypeDef ? ValidatingListTypeDefWithError<T, E> : T extends ValidatingRecordTypeDef ? ValidatingRecordTypeDefWithError<T, E> : T extends ValidatingObjectTypeDef ? ValidatingObjectTypeDefWithError<T, E> : T extends ValidatingUnionTypeDef ? ValidatingUnionTypeDefWithError<T, E> : never;
|
|
351
|
+
type ValidatingLiteralTypeDefWithError<T extends ValidatingLiteralTypeDef, E2> = T extends ValidatingLiteralTypeDef<infer E1, infer V> ? {
|
|
352
|
+
readonly type: TypeDefType.Literal;
|
|
353
|
+
readonly valuePrototype: [V];
|
|
354
|
+
readonly rule: Rule<E1 | E2>;
|
|
355
|
+
readonly required: boolean;
|
|
356
|
+
readonly readonly: boolean;
|
|
357
|
+
} : never;
|
|
358
|
+
type ValidatingListTypeDefWithError<T extends ValidatingListTypeDef, E2> = T extends ValidatingListTypeDef<infer E1, infer E> ? IsFieldReadonly<T, 'elements'> extends true ? {
|
|
359
|
+
readonly type: TypeDefType.List;
|
|
360
|
+
readonly elements: E;
|
|
361
|
+
readonly rule: Rule<E1 | E2>;
|
|
362
|
+
readonly required: boolean;
|
|
363
|
+
readonly readonly: boolean;
|
|
364
|
+
} : {
|
|
365
|
+
readonly type: TypeDefType.List;
|
|
366
|
+
elements: E;
|
|
367
|
+
readonly rule: Rule<E1 | E2>;
|
|
368
|
+
readonly required: boolean;
|
|
369
|
+
readonly readonly: boolean;
|
|
370
|
+
} : never;
|
|
371
|
+
type ValidatingRecordTypeDefWithError<T extends ValidatingRecordTypeDef, E2> = T extends ValidatingRecordTypeDef<infer E1, infer K, infer V> ? IsFieldReadonly<T, 'valueTypeDef'> extends true ? {
|
|
372
|
+
readonly type: TypeDefType.Record;
|
|
373
|
+
readonly keyPrototype: K;
|
|
374
|
+
readonly valueTypeDef: V;
|
|
375
|
+
readonly rule: Rule<E1 | E2>;
|
|
376
|
+
readonly required: boolean;
|
|
377
|
+
readonly readonly: boolean;
|
|
378
|
+
} : {
|
|
379
|
+
readonly type: TypeDefType.Record;
|
|
380
|
+
readonly keyPrototype: K;
|
|
381
|
+
valueTypeDef: V;
|
|
382
|
+
readonly rule: Rule<E1 | E2>;
|
|
383
|
+
readonly required: boolean;
|
|
384
|
+
readonly readonly: boolean;
|
|
385
|
+
} : never;
|
|
386
|
+
type ValidatingObjectTypeDefWithError<T extends ValidatingObjectTypeDef, E2> = T extends ValidatingObjectTypeDef<infer E1, infer Fields> ? {
|
|
387
|
+
readonly type: TypeDefType.Object;
|
|
388
|
+
readonly fields: Fields;
|
|
389
|
+
readonly rule: Rule<E1 | E2>;
|
|
390
|
+
readonly required: boolean;
|
|
391
|
+
readonly readonly: boolean;
|
|
392
|
+
} : never;
|
|
393
|
+
type ValidatingUnionTypeDefWithError<T extends ValidatingUnionTypeDef, E2> = T extends ValidatingUnionTypeDef<infer E1, infer D, infer U> ? {
|
|
394
|
+
readonly type: TypeDefType.Union;
|
|
395
|
+
readonly discriminator: D;
|
|
396
|
+
readonly unions: U;
|
|
397
|
+
readonly rule: Rule<E1 | E2>;
|
|
398
|
+
readonly required: boolean;
|
|
399
|
+
readonly readonly: boolean;
|
|
400
|
+
} : never;
|
|
401
|
+
|
|
402
|
+
declare class TypeDefBuilder<T extends ValidatingTypeDef> implements ValidatingType<T> {
|
|
204
403
|
readonly definition: T;
|
|
205
404
|
constructor(definition: T);
|
|
206
|
-
|
|
405
|
+
enforce<E2>(rule: Rule<E2, ValueOfType<Type<T>>>): TypeDefBuilder<ValidatingTypeDefWithError<T, E2>>;
|
|
406
|
+
required(): TypeDefBuilder<ValidatingTypeDefWithError<T, never>>;
|
|
407
|
+
required<RequiredError>(rule: Rule<RequiredError, ValueOfType<typeof this.narrow>>): TypeDefBuilder<ValidatingTypeDefWithError<T, RequiredError>>;
|
|
408
|
+
readonly(): TypeDefBuilder<T>;
|
|
409
|
+
get _type(): TypeOfType<Type<T>>;
|
|
410
|
+
get narrow(): ValidatingType<T>;
|
|
207
411
|
}
|
|
208
|
-
declare class
|
|
209
|
-
|
|
210
|
-
declare class ListTypeDefBuilder<T extends ListTypeDef> extends TypeDefBuilder<T> {
|
|
211
|
-
readonly(): ListTypeDefBuilder<{
|
|
412
|
+
declare class ListTypeDefBuilder<T extends ValidatingListTypeDef> extends TypeDefBuilder<T> {
|
|
413
|
+
readonlyElements(): ListTypeDefBuilder<{
|
|
212
414
|
readonly type: TypeDefType.List;
|
|
213
415
|
readonly elements: T['elements'];
|
|
416
|
+
readonly rule: T['rule'];
|
|
417
|
+
readonly required: boolean;
|
|
418
|
+
readonly readonly: boolean;
|
|
214
419
|
}>;
|
|
215
420
|
}
|
|
216
|
-
declare class RecordTypeDefBuilder<T extends
|
|
217
|
-
|
|
421
|
+
declare class RecordTypeDefBuilder<T extends ValidatingRecordTypeDef> extends TypeDefBuilder<T> {
|
|
422
|
+
partialKeys(): IsFieldReadonly<T, 'valueTypeDef'> extends true ? RecordTypeDefBuilder<{
|
|
218
423
|
readonly type: TypeDefType.Record;
|
|
219
424
|
readonly keyPrototype: T['keyPrototype'];
|
|
220
425
|
readonly valueTypeDef: T['valueTypeDef'] | undefined;
|
|
426
|
+
readonly rule: T['rule'];
|
|
427
|
+
readonly required: boolean;
|
|
428
|
+
readonly readonly: boolean;
|
|
221
429
|
}> : RecordTypeDefBuilder<{
|
|
222
430
|
readonly type: TypeDefType.Record;
|
|
223
431
|
readonly keyPrototype: T['keyPrototype'];
|
|
224
432
|
valueTypeDef: T['valueTypeDef'] | undefined;
|
|
433
|
+
readonly rule: T['rule'];
|
|
434
|
+
readonly required: boolean;
|
|
435
|
+
readonly readonly: boolean;
|
|
225
436
|
}>;
|
|
226
|
-
|
|
437
|
+
readonlyKeys(): RecordTypeDefBuilder<{
|
|
227
438
|
readonly type: TypeDefType.Record;
|
|
228
439
|
readonly keyPrototype: T['keyPrototype'];
|
|
229
440
|
readonly valueTypeDef: T['valueTypeDef'];
|
|
441
|
+
readonly rule: T['rule'];
|
|
442
|
+
readonly required: boolean;
|
|
443
|
+
readonly readonly: boolean;
|
|
230
444
|
}>;
|
|
231
445
|
}
|
|
232
|
-
declare class ObjectTypeDefBuilder<Fields extends Readonly<Record<ObjectFieldKey,
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
446
|
+
declare class ObjectTypeDefBuilder<E, Fields extends Readonly<Record<ObjectFieldKey, ValidatingTypeDef>> = {}> extends TypeDefBuilder<ValidatingObjectTypeDef<E, Fields>> {
|
|
447
|
+
field<Name extends string, T extends ValidatingTypeDef>(name: Name, { definition }: Type<T>): ObjectTypeDefBuilder<E, Fields & Record<Name, T>>;
|
|
448
|
+
field<Name extends string, T extends ValidatingTypeDef, RequiredError>(name: Name, { definition }: Type<T>, rule: Rule<RequiredError, ValueOfTypeDef<T>>): ObjectTypeDefBuilder<E, Fields & Record<Name, ValidatingTypeDefWithError<T, RequiredError>>>;
|
|
449
|
+
readonlyField<Name extends string, T extends ValidatingTypeDef>(name: Name, { definition }: Type<T>): ObjectTypeDefBuilder<E, Fields & Readonly<Record<Name, T>>>;
|
|
450
|
+
optionalField<Name extends string, T extends ValidatingTypeDef>(name: Name, { definition }: Type<T>): ObjectTypeDefBuilder<E, Fields & Partial<Record<Name, T>>>;
|
|
451
|
+
readonlyOptionalField<Name extends string, T extends TypeDef>(name: Name, { definition }: Type<T>): ObjectTypeDefBuilder<E, Fields & Partial<Readonly<Record<Name, T>>>>;
|
|
237
452
|
}
|
|
238
|
-
declare class UnionTypeDefBuilder<D extends string | null, U extends Record<UnionKey, TypeDef>> extends TypeDefBuilder<
|
|
239
|
-
|
|
453
|
+
declare class UnionTypeDefBuilder<E, D extends string | null, U extends Record<UnionKey, TypeDef>> extends TypeDefBuilder<ValidatingUnionTypeDef<E, D, U>> {
|
|
454
|
+
or<K extends Exclude<UnionKey, keyof U>, T extends TypeDef>(k: K, { definition: typeDef, }: Type<T>): UnionTypeDefBuilder<E, D, Readonly<Record<K, T>> & U>;
|
|
240
455
|
}
|
|
241
|
-
declare function literal<T>(value?: [T]):
|
|
242
|
-
declare const stringType:
|
|
243
|
-
declare const numberType:
|
|
244
|
-
declare const booleanType:
|
|
245
|
-
declare const nullType:
|
|
246
|
-
declare function nullable<T extends
|
|
456
|
+
declare function literal<T>(value?: [T]): TypeDefBuilder<ValidatingLiteralTypeDef<never, T>>;
|
|
457
|
+
declare const stringType: TypeDefBuilder<ValidatingLiteralTypeDef<never, string>>;
|
|
458
|
+
declare const numberType: TypeDefBuilder<ValidatingLiteralTypeDef<never, number>>;
|
|
459
|
+
declare const booleanType: TypeDefBuilder<ValidatingLiteralTypeDef<never, boolean>>;
|
|
460
|
+
declare const nullType: TypeDefBuilder<ValidatingLiteralTypeDef<never, null>>;
|
|
461
|
+
declare function nullable<T extends ValidatingTypeDef>(nonNullable: ValidatingType<T>): UnionTypeDefBuilder<never, null, {
|
|
247
462
|
readonly ['0']: T;
|
|
248
|
-
readonly ['1']:
|
|
463
|
+
readonly ['1']: ValidatingLiteralTypeDef<never, null>;
|
|
249
464
|
}>;
|
|
250
|
-
declare function list<T extends
|
|
465
|
+
declare function list<T extends ValidatingTypeDef>(elements: ValidatingType<T>): ListTypeDefBuilder<{
|
|
251
466
|
readonly type: TypeDefType.List;
|
|
252
467
|
elements: T;
|
|
468
|
+
readonly rule: Rule<never>;
|
|
469
|
+
readonly readonly: boolean;
|
|
470
|
+
readonly required: boolean;
|
|
253
471
|
}>;
|
|
254
|
-
declare function record<V extends
|
|
472
|
+
declare function record<V extends ValidatingType, K extends RecordKeyType>({ definition: valueTypeDef }: V): RecordTypeDefBuilder<{
|
|
255
473
|
readonly type: TypeDefType.Record;
|
|
256
474
|
readonly keyPrototype: K;
|
|
257
475
|
valueTypeDef: V["definition"];
|
|
476
|
+
readonly rule: Rule<never>;
|
|
477
|
+
readonly readonly: boolean;
|
|
478
|
+
readonly required: boolean;
|
|
258
479
|
}>;
|
|
259
|
-
declare function object(): ObjectTypeDefBuilder<{}>;
|
|
260
|
-
declare function union<D extends null>(): UnionTypeDefBuilder<D, {}>;
|
|
261
|
-
declare function union<D extends string>(discriminator: D): UnionTypeDefBuilder<D, {}>;
|
|
480
|
+
declare function object(): ObjectTypeDefBuilder<never, {}>;
|
|
481
|
+
declare function union<D extends null>(): UnionTypeDefBuilder<never, D, {}>;
|
|
482
|
+
declare function union<D extends string>(discriminator: D): UnionTypeDefBuilder<never, D, {}>;
|
|
262
483
|
|
|
263
|
-
type
|
|
484
|
+
type PathsOfType<T extends Type, SegmentOverride extends string | null = null, Prefix extends string = '$'> = InternalJsonPathsOf<T['definition'], Prefix, SegmentOverride, StartingDepth>;
|
|
264
485
|
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;
|
|
265
486
|
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;
|
|
266
487
|
type InternalJsonPathsOfLiteralChildren = never;
|
|
267
|
-
type InternalJsonPathsOfListChildren<F extends ListTypeDef, Prefix extends string, SegmentOverride extends string | null, Depth extends number> = InternalJsonPathsOf<F['elements'],
|
|
268
|
-
type InternalJsonPathsOfRecordChildren<F extends RecordTypeDef, Prefix extends string, SegmentOverride extends string | null, Depth extends number> = InternalJsonPathsOf<F['valueTypeDef'],
|
|
488
|
+
type InternalJsonPathsOfListChildren<F extends ListTypeDef, Prefix extends string, SegmentOverride extends string | null, Depth extends number> = InternalJsonPathsOf<F['elements'], PathOf<Prefix, number, SegmentOverride>, SegmentOverride, Depth>;
|
|
489
|
+
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>;
|
|
269
490
|
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 ? {
|
|
270
|
-
[K in keyof Fields]: InternalJsonPathsOf<Fields[K],
|
|
491
|
+
[K in keyof Fields]: InternalJsonPathsOf<Fields[K], PathOf<Prefix, `${Qualifier}${K}`, null>, SegmentOverride, Depth>;
|
|
271
492
|
}[keyof Fields] : never : never;
|
|
272
493
|
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 ? {
|
|
273
494
|
readonly [K in keyof Unions]: InternalJsonPathsOfChildren<Unions[K], Prefix, SegmentOverride, D extends null ? Qualifier : `${Qualifier}${K}:`, Depth>;
|
|
274
495
|
}[keyof Unions] : never : never;
|
|
275
496
|
|
|
276
|
-
type
|
|
277
|
-
type
|
|
497
|
+
type ValueToTypePathsOfType<T extends StrictType, SegmentOverride extends string = '*', Path extends string = '$'> = SimplifyDeep<InternalFlattenedTypePathsOf<T['definition'], SegmentOverride, Path, Path, StartingDepth>>;
|
|
498
|
+
type InternalFlattenedTypePathsOf<T extends TypeDef, SegmentOverride extends string, ValuePath extends string, TypePath extends string, Depth extends number> = {
|
|
278
499
|
readonly [K in ValuePath]: TypePath;
|
|
279
|
-
} &
|
|
280
|
-
type
|
|
281
|
-
type
|
|
282
|
-
type
|
|
283
|
-
type
|
|
284
|
-
type
|
|
285
|
-
readonly [K in keyof Fields]-?:
|
|
500
|
+
} & InternalFlattenedTypePathsOfChildren<T, SegmentOverride, ValuePath, TypePath, '', Depth>;
|
|
501
|
+
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;
|
|
502
|
+
type InternalFlattenedTypePathsOfLiteralChildren = {};
|
|
503
|
+
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>;
|
|
504
|
+
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>;
|
|
505
|
+
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<{
|
|
506
|
+
readonly [K in keyof Fields]-?: InternalFlattenedTypePathsOf<Exclude<Fields[K], undefined>, SegmentOverride, PathOf<ValuePath, `${Qualifier}${K}`>, PathOf<TypePath, `${Qualifier}${K}`>, Depth>;
|
|
286
507
|
}[keyof Fields]> : never : never;
|
|
287
|
-
type
|
|
288
|
-
readonly [K in keyof Unions]:
|
|
508
|
+
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<{
|
|
509
|
+
readonly [K in keyof Unions]: InternalFlattenedTypePathsOfChildren<Unions[K], SegmentOverride, ValuePath, TypePath, '', Depth>;
|
|
289
510
|
}[keyof Unions]> : UnionToIntersection<{
|
|
290
|
-
readonly [K in keyof Unions]:
|
|
511
|
+
readonly [K in keyof Unions]: InternalFlattenedTypePathsOfChildren<Unions[K], SegmentOverride, ValuePath, TypePath, `${Qualifier}${K}:`, Depth>;
|
|
291
512
|
}[keyof Unions]> : never : never;
|
|
292
513
|
|
|
293
514
|
type ValueTypesOfDiscriminatedUnion<U extends UnionTypeDef> = U extends UnionTypeDef<infer D, infer Unions> ? D extends string ? {
|
|
294
|
-
[K in keyof Unions]:
|
|
515
|
+
[K in keyof Unions]: ValueOfType<ReadonlyTypeOfType<{
|
|
295
516
|
definition: Unions[K];
|
|
296
|
-
}
|
|
297
|
-
[KD in D]: K;
|
|
517
|
+
}>> & {
|
|
518
|
+
readonly [KD in D]: K;
|
|
298
519
|
};
|
|
299
520
|
} : never : never;
|
|
300
521
|
|
|
301
|
-
|
|
522
|
+
declare class DefinedValidator<V, E, ValuePath extends string, Context> implements AnnotatedValidator<V | null | undefined, E, ValuePath, Context> {
|
|
523
|
+
private readonly error;
|
|
524
|
+
constructor(error: E);
|
|
525
|
+
validate(v: V | null | undefined): E | null;
|
|
526
|
+
annotations(): {
|
|
527
|
+
required: boolean;
|
|
528
|
+
readonly: boolean;
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
declare const MinimumStringLengthValidationErrorType = "minimum_string_length";
|
|
533
|
+
type MinimumStringLengthValidationError = {
|
|
534
|
+
type: typeof MinimumStringLengthValidationErrorType;
|
|
535
|
+
receivedLength: number;
|
|
536
|
+
minimumLength: number;
|
|
537
|
+
};
|
|
538
|
+
declare class MinimumStringLengthValidator<ValuePath extends string, Context> implements AnnotatedValidator<string, MinimumStringLengthValidationError, ValuePath, Context> {
|
|
539
|
+
private readonly minimumLength;
|
|
540
|
+
constructor(minimumLength: number);
|
|
541
|
+
validate(value: string): MinimumStringLengthValidationError | null;
|
|
542
|
+
annotations(): {
|
|
543
|
+
required: boolean;
|
|
544
|
+
readonly: boolean;
|
|
545
|
+
};
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
type ValidatorsOfValues<FlattenedValues extends Readonly<Record<string, any>>, TypePathsToValuePaths extends Readonly<Record<keyof FlattenedValues, string>> = Readonly<Record<keyof FlattenedValues, any>>, Context = any> = {
|
|
549
|
+
readonly [K in keyof FlattenedValues]: Validator<FlattenedValues[K], any, TypePathsToValuePaths[K], Context>;
|
|
550
|
+
};
|
|
551
|
+
|
|
552
|
+
export { type Accessor, type AnnotatedValidator, type AnyValueType, DefinedValidator, type ErrorOfValidator, type FlattenedAccessorsOfType, type FlattenedTypesOfType, type FlattenedValuesOfType, type FunctionalValidator, type InternalJsonPathsOf, type IsStrictUnion, type ListTypeDef, type LiteralTypeDef, type Mapper, type MinimumStringLengthValidationError, MinimumStringLengthValidationErrorType, MinimumStringLengthValidator, type MobxObservable, type MobxValueOfType, type NonMobxObservable, type ObjectFieldKey, type ObjectTypeDef, type ObjectTypeDefFields, type PathsOfType, type ReadonlyOfTypeDef, type ReadonlyTypeOfType, type RecordKeyType, type RecordTypeDef, type Setter, type StrictListTypeDef, type StrictLiteralTypeDef, type StrictObjectTypeDef, type StrictObjectTypeDefFields, type StrictRecordTypeDef, type StrictType, type StrictTypeDef, type StrictUnionTypeDef, type Type, type TypeDef, TypeDefType, type UnionKey, type UnionTypeDef, type ValidationError, type Validator, type ValidatorsOfValues, type ValueOfType, type ValueOfTypeDef, type ValueToTypePathsOfType, type ValueTypesOfDiscriminatedUnion, annotations, booleanType, copy, flattenAccessorsOfType, flattenJsonValueToTypePathsOf, flattenTypesOfType, flattenValidatorsOfValidatingType, flattenValueTo, flattenValuesOfType, getUnionTypeDef, isAnnotatedValidator, isFunctionalValidator, jsonPath, jsonPathPop, list, literal, mobxCopy, nullType, nullable, numberType, object, record, stringType, union, validate, valuePathToTypePath };
|