@sinclair/typebox 0.32.24 → 0.32.25
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/build/import/type/awaited/awaited.mjs +1 -1
- package/build/import/type/clone/value.mjs +8 -3
- package/build/import/type/composite/composite.mjs +14 -10
- package/build/import/type/const/const.mjs +4 -3
- package/build/import/type/deref/deref.d.mts +1 -1
- package/build/import/type/deref/deref.mjs +6 -4
- package/build/import/type/exclude/exclude-from-mapped-result.mjs +4 -3
- package/build/import/type/exclude/exclude.mjs +1 -1
- package/build/import/type/extends/extends-from-mapped-result.mjs +4 -3
- package/build/import/type/extends/extends.mjs +1 -1
- package/build/import/type/extract/extract-from-mapped-result.mjs +4 -3
- package/build/import/type/extract/extract.mjs +1 -1
- package/build/import/type/guard/index.d.mts +1 -0
- package/build/import/type/guard/index.mjs +1 -0
- package/build/import/type/guard/kind.d.mts +136 -0
- package/build/import/type/guard/kind.mjs +217 -0
- package/build/import/type/guard/type.d.mts +2 -2
- package/build/import/type/indexed/indexed-from-mapped-result.mjs +5 -3
- package/build/import/type/indexed/indexed-property-keys.mjs +5 -4
- package/build/import/type/indexed/indexed.mjs +1 -1
- package/build/import/type/intersect/intersect-create.mjs +1 -1
- package/build/import/type/intersect/intersect-evaluated.mjs +1 -2
- package/build/import/type/intersect/intersect.mjs +1 -1
- package/build/import/type/intrinsic/intrinsic.mjs +1 -1
- package/build/import/type/keyof/keyof-from-mapped-result.mjs +4 -3
- package/build/import/type/keyof/keyof-property-keys.mjs +5 -4
- package/build/import/type/keyof/keyof.mjs +1 -1
- package/build/import/type/mapped/mapped.d.mts +1 -1
- package/build/import/type/mapped/mapped.mjs +14 -12
- package/build/import/type/object/object.mjs +4 -2
- package/build/import/type/omit/omit-from-mapped-result.mjs +4 -3
- package/build/import/type/omit/omit.mjs +2 -4
- package/build/import/type/optional/optional-from-mapped-result.mjs +4 -3
- package/build/import/type/optional/optional.mjs +1 -1
- package/build/import/type/partial/partial-from-mapped-result.mjs +4 -3
- package/build/import/type/partial/partial.mjs +5 -4
- package/build/import/type/pick/pick-from-mapped-result.mjs +4 -3
- package/build/import/type/pick/pick.d.mts +1 -1
- package/build/import/type/pick/pick.mjs +6 -4
- package/build/import/type/readonly/readonly-from-mapped-result.mjs +4 -3
- package/build/import/type/readonly/readonly.mjs +1 -1
- package/build/import/type/record/record.mjs +5 -3
- package/build/import/type/required/required-from-mapped-result.mjs +4 -3
- package/build/import/type/required/required.mjs +5 -4
- package/build/import/type/rest/rest.mjs +4 -4
- package/build/import/type/sets/set.mjs +4 -1
- package/build/import/type/template-literal/pattern.mjs +1 -2
- package/build/import/type/transform/transform.mjs +1 -1
- package/build/import/type/union/union-evaluated.mjs +1 -1
- package/build/import/value/clean/clean.mjs +1 -1
- package/build/import/value/clone/clone.mjs +8 -2
- package/build/import/value/create/create.mjs +11 -7
- package/build/import/value/hash/hash.mjs +1 -1
- package/build/import/value/mutate/mutate.mjs +2 -2
- package/build/import/value/transform/decode.mjs +30 -30
- package/build/import/value/transform/encode.mjs +33 -30
- package/build/require/type/awaited/awaited.js +4 -4
- package/build/require/type/clone/value.js +8 -3
- package/build/require/type/composite/composite.js +15 -11
- package/build/require/type/const/const.js +4 -3
- package/build/require/type/deref/deref.d.ts +1 -1
- package/build/require/type/deref/deref.js +17 -15
- package/build/require/type/exclude/exclude-from-mapped-result.js +4 -3
- package/build/require/type/exclude/exclude.js +4 -4
- package/build/require/type/extends/extends-from-mapped-result.js +4 -3
- package/build/require/type/extends/extends.js +3 -3
- package/build/require/type/extract/extract-from-mapped-result.js +4 -3
- package/build/require/type/extract/extract.js +4 -4
- package/build/require/type/guard/index.d.ts +1 -0
- package/build/require/type/guard/index.js +2 -1
- package/build/require/type/guard/kind.d.ts +136 -0
- package/build/require/type/guard/kind.js +266 -0
- package/build/require/type/guard/type.d.ts +2 -2
- package/build/require/type/indexed/indexed-from-mapped-result.js +5 -3
- package/build/require/type/indexed/indexed-property-keys.js +10 -9
- package/build/require/type/indexed/indexed.js +11 -11
- package/build/require/type/intersect/intersect-create.js +4 -4
- package/build/require/type/intersect/intersect-evaluated.js +4 -5
- package/build/require/type/intersect/intersect.js +2 -2
- package/build/require/type/intrinsic/intrinsic.js +5 -5
- package/build/require/type/keyof/keyof-from-mapped-result.js +4 -3
- package/build/require/type/keyof/keyof-property-keys.js +11 -10
- package/build/require/type/keyof/keyof.js +2 -2
- package/build/require/type/mapped/mapped.d.ts +1 -1
- package/build/require/type/mapped/mapped.js +29 -27
- package/build/require/type/object/object.js +6 -4
- package/build/require/type/omit/omit-from-mapped-result.js +4 -3
- package/build/require/type/omit/omit.js +8 -10
- package/build/require/type/optional/optional-from-mapped-result.js +4 -3
- package/build/require/type/optional/optional.js +2 -2
- package/build/require/type/partial/partial-from-mapped-result.js +4 -3
- package/build/require/type/partial/partial.js +9 -8
- package/build/require/type/pick/pick-from-mapped-result.js +4 -3
- package/build/require/type/pick/pick.d.ts +1 -1
- package/build/require/type/pick/pick.js +12 -10
- package/build/require/type/readonly/readonly-from-mapped-result.js +4 -3
- package/build/require/type/readonly/readonly.js +2 -2
- package/build/require/type/record/record.js +12 -10
- package/build/require/type/required/required-from-mapped-result.js +4 -3
- package/build/require/type/required/required.js +9 -8
- package/build/require/type/rest/rest.js +4 -4
- package/build/require/type/sets/set.js +4 -1
- package/build/require/type/template-literal/pattern.js +9 -10
- package/build/require/type/transform/transform.js +2 -2
- package/build/require/type/union/union-evaluated.js +3 -3
- package/build/require/value/clean/clean.js +1 -1
- package/build/require/value/clone/clone.js +8 -2
- package/build/require/value/create/create.js +11 -7
- package/build/require/value/hash/hash.js +1 -1
- package/build/require/value/mutate/mutate.js +2 -2
- package/build/require/value/transform/decode.js +30 -30
- package/build/require/value/transform/encode.js +33 -30
- package/package.json +1 -1
- package/readme.md +4 -4
|
@@ -65,21 +65,21 @@ function FromIntersect(schema, references, path, value) {
|
|
|
65
65
|
if (!IsStandardObject(value) || IsValueType(value))
|
|
66
66
|
return Default(schema, path, value);
|
|
67
67
|
const knownKeys = KeyOfPropertyKeys(schema);
|
|
68
|
-
const knownProperties =
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
68
|
+
const knownProperties = { ...value };
|
|
69
|
+
for (const key of knownKeys)
|
|
70
|
+
if (key in knownProperties) {
|
|
71
|
+
knownProperties[key] = Visit(Index(schema, [key]), references, `${path}/${key}`, knownProperties[key]);
|
|
72
|
+
}
|
|
73
73
|
if (!IsTransform(schema.unevaluatedProperties)) {
|
|
74
74
|
return Default(schema, path, knownProperties);
|
|
75
75
|
}
|
|
76
76
|
const unknownKeys = Object.getOwnPropertyNames(knownProperties);
|
|
77
77
|
const unevaluatedProperties = schema.unevaluatedProperties;
|
|
78
|
-
const unknownProperties =
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
78
|
+
const unknownProperties = { ...knownProperties };
|
|
79
|
+
for (const key of unknownKeys)
|
|
80
|
+
if (!knownKeys.includes(key)) {
|
|
81
|
+
unknownProperties[key] = Default(unevaluatedProperties, `${path}/${key}`, unknownProperties[key]);
|
|
82
|
+
}
|
|
83
83
|
return Default(schema, path, unknownProperties);
|
|
84
84
|
}
|
|
85
85
|
function FromNot(schema, references, path, value) {
|
|
@@ -90,21 +90,21 @@ function FromObject(schema, references, path, value) {
|
|
|
90
90
|
if (!IsStandardObject(value))
|
|
91
91
|
return Default(schema, path, value);
|
|
92
92
|
const knownKeys = KeyOfPropertyKeys(schema);
|
|
93
|
-
const knownProperties =
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
93
|
+
const knownProperties = { ...value };
|
|
94
|
+
for (const key of knownKeys)
|
|
95
|
+
if (key in knownProperties) {
|
|
96
|
+
knownProperties[key] = Visit(schema.properties[key], references, `${path}/${key}`, knownProperties[key]);
|
|
97
|
+
}
|
|
98
98
|
if (!IsSchema(schema.additionalProperties)) {
|
|
99
99
|
return Default(schema, path, knownProperties);
|
|
100
100
|
}
|
|
101
101
|
const unknownKeys = Object.getOwnPropertyNames(knownProperties);
|
|
102
102
|
const additionalProperties = schema.additionalProperties;
|
|
103
|
-
const unknownProperties =
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
103
|
+
const unknownProperties = { ...knownProperties };
|
|
104
|
+
for (const key of unknownKeys)
|
|
105
|
+
if (!knownKeys.includes(key)) {
|
|
106
|
+
unknownProperties[key] = Default(additionalProperties, `${path}/${key}`, unknownProperties[key]);
|
|
107
|
+
}
|
|
108
108
|
return Default(schema, path, unknownProperties);
|
|
109
109
|
}
|
|
110
110
|
// prettier-ignore
|
|
@@ -113,21 +113,21 @@ function FromRecord(schema, references, path, value) {
|
|
|
113
113
|
return Default(schema, path, value);
|
|
114
114
|
const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];
|
|
115
115
|
const knownKeys = new RegExp(pattern);
|
|
116
|
-
const knownProperties =
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
116
|
+
const knownProperties = { ...value };
|
|
117
|
+
for (const key of Object.getOwnPropertyNames(value))
|
|
118
|
+
if (knownKeys.test(key)) {
|
|
119
|
+
knownProperties[key] = Visit(schema.patternProperties[pattern], references, `${path}/${key}`, knownProperties[key]);
|
|
120
|
+
}
|
|
121
121
|
if (!IsSchema(schema.additionalProperties)) {
|
|
122
122
|
return Default(schema, path, knownProperties);
|
|
123
123
|
}
|
|
124
124
|
const unknownKeys = Object.getOwnPropertyNames(knownProperties);
|
|
125
125
|
const additionalProperties = schema.additionalProperties;
|
|
126
|
-
const unknownProperties =
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
126
|
+
const unknownProperties = { ...knownProperties };
|
|
127
|
+
for (const key of unknownKeys)
|
|
128
|
+
if (!knownKeys.test(key)) {
|
|
129
|
+
unknownProperties[key] = Default(additionalProperties, `${path}/${key}`, unknownProperties[key]);
|
|
130
|
+
}
|
|
131
131
|
return Default(schema, path, unknownProperties);
|
|
132
132
|
}
|
|
133
133
|
// prettier-ignore
|
|
@@ -66,21 +66,22 @@ function FromIntersect(schema, references, path, value) {
|
|
|
66
66
|
if (!IsStandardObject(value) || IsValueType(value))
|
|
67
67
|
return defaulted;
|
|
68
68
|
const knownKeys = KeyOfPropertyKeys(schema);
|
|
69
|
-
const knownProperties =
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
69
|
+
const knownProperties = { ...defaulted };
|
|
70
|
+
for (const key of knownKeys)
|
|
71
|
+
if (key in knownProperties) {
|
|
72
|
+
knownProperties[key] = Visit(Index(schema, [key]), references, `${path}/${key}`, knownProperties[key]);
|
|
73
|
+
}
|
|
74
74
|
if (!IsTransform(schema.unevaluatedProperties)) {
|
|
75
75
|
return Default(schema, path, knownProperties);
|
|
76
76
|
}
|
|
77
77
|
const unknownKeys = Object.getOwnPropertyNames(knownProperties);
|
|
78
78
|
const unevaluatedProperties = schema.unevaluatedProperties;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
79
|
+
const properties = { ...knownProperties };
|
|
80
|
+
for (const key of unknownKeys)
|
|
81
|
+
if (!knownKeys.includes(key)) {
|
|
82
|
+
properties[key] = Default(unevaluatedProperties, `${path}/${key}`, properties[key]);
|
|
83
|
+
}
|
|
84
|
+
return properties;
|
|
84
85
|
}
|
|
85
86
|
// prettier-ignore
|
|
86
87
|
function FromNot(schema, references, path, value) {
|
|
@@ -92,21 +93,22 @@ function FromObject(schema, references, path, value) {
|
|
|
92
93
|
if (!IsStandardObject(value))
|
|
93
94
|
return defaulted;
|
|
94
95
|
const knownKeys = KeyOfPropertyKeys(schema);
|
|
95
|
-
const knownProperties =
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
96
|
+
const knownProperties = { ...defaulted };
|
|
97
|
+
for (const key of knownKeys)
|
|
98
|
+
if (key in value) {
|
|
99
|
+
knownProperties[key] = Visit(schema.properties[key], references, `${path}/${key}`, knownProperties[key]);
|
|
100
|
+
}
|
|
100
101
|
if (!IsSchema(schema.additionalProperties)) {
|
|
101
102
|
return knownProperties;
|
|
102
103
|
}
|
|
103
104
|
const unknownKeys = Object.getOwnPropertyNames(knownProperties);
|
|
104
105
|
const additionalProperties = schema.additionalProperties;
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
106
|
+
const properties = { ...knownProperties };
|
|
107
|
+
for (const key of unknownKeys)
|
|
108
|
+
if (!knownKeys.includes(key)) {
|
|
109
|
+
properties[key] = Default(additionalProperties, `${path}/${key}`, properties[key]);
|
|
110
|
+
}
|
|
111
|
+
return properties;
|
|
110
112
|
}
|
|
111
113
|
// prettier-ignore
|
|
112
114
|
function FromRecord(schema, references, path, value) {
|
|
@@ -115,21 +117,22 @@ function FromRecord(schema, references, path, value) {
|
|
|
115
117
|
return defaulted;
|
|
116
118
|
const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];
|
|
117
119
|
const knownKeys = new RegExp(pattern);
|
|
118
|
-
const knownProperties =
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
120
|
+
const knownProperties = { ...defaulted };
|
|
121
|
+
for (const key of Object.getOwnPropertyNames(value))
|
|
122
|
+
if (knownKeys.test(key)) {
|
|
123
|
+
knownProperties[key] = Visit(schema.patternProperties[pattern], references, `${path}/${key}`, knownProperties[key]);
|
|
124
|
+
}
|
|
123
125
|
if (!IsSchema(schema.additionalProperties)) {
|
|
124
126
|
return Default(schema, path, knownProperties);
|
|
125
127
|
}
|
|
126
128
|
const unknownKeys = Object.getOwnPropertyNames(knownProperties);
|
|
127
129
|
const additionalProperties = schema.additionalProperties;
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
130
|
+
const properties = { ...knownProperties };
|
|
131
|
+
for (const key of unknownKeys)
|
|
132
|
+
if (!knownKeys.test(key)) {
|
|
133
|
+
properties[key] = Default(additionalProperties, `${path}/${key}`, properties[key]);
|
|
134
|
+
}
|
|
135
|
+
return properties;
|
|
133
136
|
}
|
|
134
137
|
// prettier-ignore
|
|
135
138
|
function FromRef(schema, references, path, value) {
|
|
@@ -8,7 +8,7 @@ const type_1 = require("../clone/type");
|
|
|
8
8
|
// ------------------------------------------------------------------
|
|
9
9
|
// TypeGuard
|
|
10
10
|
// ------------------------------------------------------------------
|
|
11
|
-
const
|
|
11
|
+
const kind_1 = require("../guard/kind");
|
|
12
12
|
// prettier-ignore
|
|
13
13
|
function FromRest(T) {
|
|
14
14
|
return T.map(L => AwaitedResolve(L));
|
|
@@ -30,9 +30,9 @@ function FromPromise(T) {
|
|
|
30
30
|
// ----------------------------------------------------------------
|
|
31
31
|
// prettier-ignore
|
|
32
32
|
function AwaitedResolve(T) {
|
|
33
|
-
return ((0,
|
|
34
|
-
(0,
|
|
35
|
-
(0,
|
|
33
|
+
return ((0, kind_1.IsIntersect)(T) ? FromIntersect(T.allOf) :
|
|
34
|
+
(0, kind_1.IsUnion)(T) ? FromUnion(T.anyOf) :
|
|
35
|
+
(0, kind_1.IsPromise)(T) ? FromPromise(T.item) :
|
|
36
36
|
T);
|
|
37
37
|
}
|
|
38
38
|
/** `[JavaScript]` Constructs a type by recursively unwrapping Promise types */
|
|
@@ -16,9 +16,14 @@ function RegExpType(value) {
|
|
|
16
16
|
return new RegExp(value.source, value.flags);
|
|
17
17
|
}
|
|
18
18
|
function ObjectType(value) {
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
|
|
19
|
+
const result = {};
|
|
20
|
+
for (const key of Object.getOwnPropertyNames(value)) {
|
|
21
|
+
result[key] = Visit(value[key]);
|
|
22
|
+
}
|
|
23
|
+
for (const key of Object.getOwnPropertySymbols(value)) {
|
|
24
|
+
result[key] = Visit(value[key]);
|
|
25
|
+
}
|
|
26
|
+
return result;
|
|
22
27
|
}
|
|
23
28
|
// prettier-ignore
|
|
24
29
|
function Visit(value) {
|
|
@@ -10,28 +10,32 @@ const index_5 = require("../sets/index");
|
|
|
10
10
|
// ------------------------------------------------------------------
|
|
11
11
|
// TypeGuard
|
|
12
12
|
// ------------------------------------------------------------------
|
|
13
|
-
const
|
|
13
|
+
const kind_1 = require("../guard/kind");
|
|
14
14
|
// prettier-ignore
|
|
15
15
|
function CompositeKeys(T) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
const Acc = [];
|
|
17
|
+
for (const L of T)
|
|
18
|
+
Acc.push(...(0, index_3.KeyOfPropertyKeys)(L));
|
|
19
|
+
return (0, index_5.SetDistinct)(Acc);
|
|
19
20
|
}
|
|
20
21
|
// prettier-ignore
|
|
21
22
|
function FilterNever(T) {
|
|
22
|
-
return T.filter(L => !(0,
|
|
23
|
+
return T.filter(L => !(0, kind_1.IsNever)(L));
|
|
23
24
|
}
|
|
24
25
|
// prettier-ignore
|
|
25
26
|
function CompositeProperty(T, K) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
const Acc = [];
|
|
28
|
+
for (const L of T)
|
|
29
|
+
Acc.push(...(0, index_2.IndexFromPropertyKeys)(L, [K]));
|
|
30
|
+
return FilterNever(Acc);
|
|
29
31
|
}
|
|
30
32
|
// prettier-ignore
|
|
31
33
|
function CompositeProperties(T, K) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
const Acc = {};
|
|
35
|
+
for (const L of K) {
|
|
36
|
+
Acc[L] = (0, index_1.IntersectEvaluated)(CompositeProperty(T, L));
|
|
37
|
+
}
|
|
38
|
+
return Acc;
|
|
35
39
|
}
|
|
36
40
|
// prettier-ignore
|
|
37
41
|
function Composite(T, options = {}) {
|
|
@@ -26,9 +26,10 @@ function FromArray(T) {
|
|
|
26
26
|
}
|
|
27
27
|
// prettier-ignore
|
|
28
28
|
function FromProperties(value) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
const Acc = {};
|
|
30
|
+
for (const K of globalThis.Object.getOwnPropertyNames(value))
|
|
31
|
+
Acc[K] = (0, index_10.Readonly)(FromValue(value[K], false));
|
|
32
|
+
return Acc;
|
|
32
33
|
}
|
|
33
34
|
function ConditionalReadonly(T, root) {
|
|
34
35
|
return (root === true ? T : (0, index_10.Readonly)(T));
|
|
@@ -15,7 +15,7 @@ export type TFromRest<T extends TSchema[], Acc extends TSchema[] = []> = (T exte
|
|
|
15
15
|
type FromProperties<T extends TProperties> = Evaluate<{
|
|
16
16
|
[K in keyof T]: TDeref<T[K]>;
|
|
17
17
|
}>;
|
|
18
|
-
declare function FromProperties(properties: TProperties, references: TSchema[]):
|
|
18
|
+
declare function FromProperties(properties: TProperties, references: TSchema[]): never;
|
|
19
19
|
export type TDeref<T extends TSchema> = T extends TConstructor<infer S extends TSchema[], infer R extends TSchema> ? TConstructor<TFromRest<S>, TDeref<R>> : T extends TFunction<infer S extends TSchema[], infer R extends TSchema> ? TFunction<TFromRest<S>, TDeref<R>> : T extends TIntersect<infer S extends TSchema[]> ? TIntersect<TFromRest<S>> : T extends TUnion<infer S extends TSchema[]> ? TUnion<TFromRest<S>> : T extends TTuple<infer S extends TSchema[]> ? TTuple<TFromRest<S>> : T extends TObject<infer S extends TProperties> ? TObject<FromProperties<S>> : T extends TArray<infer S extends TSchema> ? TArray<TDeref<S>> : T extends TPromise<infer S extends TSchema> ? TPromise<TDeref<S>> : T extends TAsyncIterator<infer S extends TSchema> ? TAsyncIterator<TDeref<S>> : T extends TIterator<infer S extends TSchema> ? TIterator<TDeref<S>> : T extends TRef<infer S extends TSchema> ? TDeref<S> : T;
|
|
20
20
|
/** `[Json]` Creates a dereferenced type */
|
|
21
21
|
export declare function Deref<T extends TSchema>(schema: T, references: TSchema[]): TDeref<T>;
|
|
@@ -8,15 +8,17 @@ const value_1 = require("../guard/value");
|
|
|
8
8
|
// ------------------------------------------------------------------
|
|
9
9
|
// TypeGuard
|
|
10
10
|
// ------------------------------------------------------------------
|
|
11
|
-
const
|
|
11
|
+
const kind_1 = require("../guard/kind");
|
|
12
12
|
function FromRest(schema, references) {
|
|
13
13
|
return schema.map((schema) => Deref(schema, references));
|
|
14
14
|
}
|
|
15
15
|
// prettier-ignore
|
|
16
16
|
function FromProperties(properties, references) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
const Acc = {};
|
|
18
|
+
for (const K of globalThis.Object.getOwnPropertyNames(properties)) {
|
|
19
|
+
Acc[K] = Deref(properties[K], references);
|
|
20
|
+
}
|
|
21
|
+
return Acc;
|
|
20
22
|
}
|
|
21
23
|
// prettier-ignore
|
|
22
24
|
function FromConstructor(schema, references) {
|
|
@@ -82,17 +84,17 @@ function FromRef(schema, references) {
|
|
|
82
84
|
}
|
|
83
85
|
// prettier-ignore
|
|
84
86
|
function DerefResolve(schema, references) {
|
|
85
|
-
return ((0,
|
|
86
|
-
(0,
|
|
87
|
-
(0,
|
|
88
|
-
(0,
|
|
89
|
-
(0,
|
|
90
|
-
(0,
|
|
91
|
-
(0,
|
|
92
|
-
(0,
|
|
93
|
-
(0,
|
|
94
|
-
(0,
|
|
95
|
-
(0,
|
|
87
|
+
return ((0, kind_1.IsConstructor)(schema) ? FromConstructor(schema, references) :
|
|
88
|
+
(0, kind_1.IsFunction)(schema) ? FromFunction(schema, references) :
|
|
89
|
+
(0, kind_1.IsIntersect)(schema) ? FromIntersect(schema, references) :
|
|
90
|
+
(0, kind_1.IsUnion)(schema) ? FromUnion(schema, references) :
|
|
91
|
+
(0, kind_1.IsTuple)(schema) ? FromTuple(schema, references) :
|
|
92
|
+
(0, kind_1.IsArray)(schema) ? FromArray(schema, references) :
|
|
93
|
+
(0, kind_1.IsObject)(schema) ? FromObject(schema, references) :
|
|
94
|
+
(0, kind_1.IsPromise)(schema) ? FromPromise(schema, references) :
|
|
95
|
+
(0, kind_1.IsAsyncIterator)(schema) ? FromAsyncIterator(schema, references) :
|
|
96
|
+
(0, kind_1.IsIterator)(schema) ? FromIterator(schema, references) :
|
|
97
|
+
(0, kind_1.IsRef)(schema) ? FromRef(schema, references) :
|
|
96
98
|
schema);
|
|
97
99
|
}
|
|
98
100
|
// ------------------------------------------------------------------
|
|
@@ -6,9 +6,10 @@ const index_1 = require("../mapped/index");
|
|
|
6
6
|
const exclude_1 = require("./exclude");
|
|
7
7
|
// prettier-ignore
|
|
8
8
|
function FromProperties(P, U) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
const Acc = {};
|
|
10
|
+
for (const K2 of globalThis.Object.getOwnPropertyNames(P))
|
|
11
|
+
Acc[K2] = (0, exclude_1.Exclude)(P[K2], U);
|
|
12
|
+
return Acc;
|
|
12
13
|
}
|
|
13
14
|
// prettier-ignore
|
|
14
15
|
function FromMappedResult(R, T) {
|
|
@@ -11,7 +11,7 @@ const exclude_from_template_literal_1 = require("./exclude-from-template-literal
|
|
|
11
11
|
// ------------------------------------------------------------------
|
|
12
12
|
// TypeGuard
|
|
13
13
|
// ------------------------------------------------------------------
|
|
14
|
-
const
|
|
14
|
+
const kind_1 = require("../guard/kind");
|
|
15
15
|
function ExcludeRest(L, R) {
|
|
16
16
|
const excluded = L.filter((inner) => (0, index_3.ExtendsCheck)(inner, R) === index_3.ExtendsResult.False);
|
|
17
17
|
return excluded.length === 1 ? excluded[0] : (0, index_1.Union)(excluded);
|
|
@@ -19,12 +19,12 @@ function ExcludeRest(L, R) {
|
|
|
19
19
|
/** `[Json]` Constructs a type by excluding from unionType all union members that are assignable to excludedMembers */
|
|
20
20
|
function Exclude(L, R, options = {}) {
|
|
21
21
|
// overloads
|
|
22
|
-
if ((0,
|
|
22
|
+
if ((0, kind_1.IsTemplateLiteral)(L))
|
|
23
23
|
return (0, type_1.CloneType)((0, exclude_from_template_literal_1.ExcludeFromTemplateLiteral)(L, R), options);
|
|
24
|
-
if ((0,
|
|
24
|
+
if ((0, kind_1.IsMappedResult)(L))
|
|
25
25
|
return (0, type_1.CloneType)((0, exclude_from_mapped_result_1.ExcludeFromMappedResult)(L, R), options);
|
|
26
26
|
// prettier-ignore
|
|
27
|
-
return (0, type_1.CloneType)((0,
|
|
27
|
+
return (0, type_1.CloneType)((0, kind_1.IsUnion)(L) ? ExcludeRest(L.anyOf, R) :
|
|
28
28
|
(0, index_3.ExtendsCheck)(L, R) !== index_3.ExtendsResult.False ? (0, index_2.Never)() : L, options);
|
|
29
29
|
}
|
|
30
30
|
exports.Exclude = Exclude;
|
|
@@ -6,9 +6,10 @@ const index_1 = require("../mapped/index");
|
|
|
6
6
|
const extends_1 = require("./extends");
|
|
7
7
|
// prettier-ignore
|
|
8
8
|
function FromProperties(P, Right, True, False, options) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
const Acc = {};
|
|
10
|
+
for (const K2 of globalThis.Object.getOwnPropertyNames(P))
|
|
11
|
+
Acc[K2] = (0, extends_1.Extends)(P[K2], Right, True, False, options);
|
|
12
|
+
return Acc;
|
|
12
13
|
}
|
|
13
14
|
// prettier-ignore
|
|
14
15
|
function FromMappedResult(Left, Right, True, False, options) {
|
|
@@ -10,7 +10,7 @@ const extends_from_mapped_result_1 = require("./extends-from-mapped-result");
|
|
|
10
10
|
// ------------------------------------------------------------------
|
|
11
11
|
// TypeGuard
|
|
12
12
|
// ------------------------------------------------------------------
|
|
13
|
-
const
|
|
13
|
+
const kind_1 = require("../guard/kind");
|
|
14
14
|
// prettier-ignore
|
|
15
15
|
function ExtendsResolve(left, right, trueType, falseType) {
|
|
16
16
|
const R = (0, extends_check_1.ExtendsCheck)(left, right);
|
|
@@ -21,8 +21,8 @@ function ExtendsResolve(left, right, trueType, falseType) {
|
|
|
21
21
|
/** `[Json]` Creates a Conditional type */
|
|
22
22
|
function Extends(L, R, T, F, options = {}) {
|
|
23
23
|
// prettier-ignore
|
|
24
|
-
return ((0,
|
|
25
|
-
(0,
|
|
24
|
+
return ((0, kind_1.IsMappedResult)(L) ? (0, extends_from_mapped_result_1.ExtendsFromMappedResult)(L, R, T, F, options) :
|
|
25
|
+
(0, kind_1.IsMappedKey)(L) ? (0, type_1.CloneType)((0, extends_from_mapped_key_1.ExtendsFromMappedKey)(L, R, T, F, options)) :
|
|
26
26
|
(0, type_1.CloneType)(ExtendsResolve(L, R, T, F), options));
|
|
27
27
|
}
|
|
28
28
|
exports.Extends = Extends;
|
|
@@ -6,9 +6,10 @@ const index_1 = require("../mapped/index");
|
|
|
6
6
|
const extract_1 = require("./extract");
|
|
7
7
|
// prettier-ignore
|
|
8
8
|
function FromProperties(P, T) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
const Acc = {};
|
|
10
|
+
for (const K2 of globalThis.Object.getOwnPropertyNames(P))
|
|
11
|
+
Acc[K2] = (0, extract_1.Extract)(P[K2], T);
|
|
12
|
+
return Acc;
|
|
12
13
|
}
|
|
13
14
|
// prettier-ignore
|
|
14
15
|
function FromMappedResult(R, T) {
|
|
@@ -11,7 +11,7 @@ const extract_from_template_literal_1 = require("./extract-from-template-literal
|
|
|
11
11
|
// ------------------------------------------------------------------
|
|
12
12
|
// TypeGuard
|
|
13
13
|
// ------------------------------------------------------------------
|
|
14
|
-
const
|
|
14
|
+
const kind_1 = require("../guard/kind");
|
|
15
15
|
function ExtractRest(L, R) {
|
|
16
16
|
const extracted = L.filter((inner) => (0, index_3.ExtendsCheck)(inner, R) !== index_3.ExtendsResult.False);
|
|
17
17
|
return extracted.length === 1 ? extracted[0] : (0, index_1.Union)(extracted);
|
|
@@ -19,12 +19,12 @@ function ExtractRest(L, R) {
|
|
|
19
19
|
/** `[Json]` Constructs a type by extracting from type all union members that are assignable to union */
|
|
20
20
|
function Extract(L, R, options = {}) {
|
|
21
21
|
// overloads
|
|
22
|
-
if ((0,
|
|
22
|
+
if ((0, kind_1.IsTemplateLiteral)(L))
|
|
23
23
|
return (0, type_1.CloneType)((0, extract_from_template_literal_1.ExtractFromTemplateLiteral)(L, R), options);
|
|
24
|
-
if ((0,
|
|
24
|
+
if ((0, kind_1.IsMappedResult)(L))
|
|
25
25
|
return (0, type_1.CloneType)((0, extract_from_mapped_result_1.ExtractFromMappedResult)(L, R), options);
|
|
26
26
|
// prettier-ignore
|
|
27
|
-
return (0, type_1.CloneType)((0,
|
|
27
|
+
return (0, type_1.CloneType)((0, kind_1.IsUnion)(L) ? ExtractRest(L.anyOf, R) :
|
|
28
28
|
(0, index_3.ExtendsCheck)(L, R) !== index_3.ExtendsResult.False ? L : (0, index_2.Never)(), options);
|
|
29
29
|
}
|
|
30
30
|
exports.Extract = Extract;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.ValueGuard = exports.TypeGuard = void 0;
|
|
4
|
+
exports.ValueGuard = exports.TypeGuard = exports.KindGuard = void 0;
|
|
5
|
+
exports.KindGuard = require("./kind");
|
|
5
6
|
exports.TypeGuard = require("./type");
|
|
6
7
|
exports.ValueGuard = require("./value");
|