@sinclair/typebox 0.32.0-dev-19 → 0.32.0-dev-21
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/compiler/compiler.mjs +62 -62
- package/build/import/errors/errors.mjs +62 -62
- package/build/import/index.d.mts +6 -6
- package/build/import/index.mjs +3 -3
- package/build/import/type/indexed/indexed-property-keys.d.mts +2 -2
- package/build/import/type/indexed/indexed-property-keys.mjs +6 -11
- package/build/import/type/intrinsic/intrinsic.mjs +3 -3
- package/build/import/type/optional/index.d.mts +1 -0
- package/build/import/type/optional/index.mjs +1 -0
- package/build/import/type/optional/optional-from-mapped-result.d.mts +12 -0
- package/build/import/type/optional/optional-from-mapped-result.mjs +17 -0
- package/build/import/type/optional/optional.d.mts +19 -2
- package/build/import/type/optional/optional.mjs +18 -2
- package/build/import/type/readonly/index.d.mts +1 -0
- package/build/import/type/readonly/index.mjs +1 -0
- package/build/import/type/readonly/readonly-from-mapped-result.d.mts +12 -0
- package/build/import/type/readonly/readonly-from-mapped-result.mjs +17 -0
- package/build/import/type/readonly/readonly.d.mts +18 -1
- package/build/import/type/readonly/readonly.mjs +18 -2
- package/build/import/type/record/record.d.mts +2 -2
- package/build/import/type/record/record.mjs +2 -3
- package/build/import/type/schema/schema.d.mts +1 -1
- package/build/import/type/symbol/symbol.d.mts +1 -1
- package/build/import/type/template-literal/finite.d.mts +7 -5
- package/build/import/type/template-literal/finite.mjs +14 -5
- package/build/import/type/template-literal/generate.d.mts +14 -8
- package/build/import/type/template-literal/generate.mjs +19 -9
- package/build/import/type/template-literal/index.d.mts +1 -1
- package/build/import/type/template-literal/index.mjs +1 -1
- package/build/import/type/template-literal/{parser.mjs → parse.mjs} +7 -2
- package/build/import/type/template-literal/syntax.d.mts +1 -1
- package/build/import/type/template-literal/syntax.mjs +0 -1
- package/build/import/type/template-literal/template-literal.d.mts +2 -2
- package/build/import/type/template-literal/template-literal.mjs +1 -1
- package/build/import/type/template-literal/union.d.mts +2 -2
- package/build/import/type/template-literal/union.mjs +5 -10
- package/build/import/type/type/json.d.mts +19 -7
- package/build/import/type/type/json.mjs +5 -5
- package/build/import/value/cast/cast.mjs +20 -20
- package/build/import/value/check/check.mjs +62 -62
- package/build/import/value/clean/clean.mjs +16 -16
- package/build/import/value/convert/convert.mjs +36 -36
- package/build/import/value/create/create.mjs +66 -67
- package/build/import/value/default/default.mjs +16 -16
- package/build/import/value/transform/decode.mjs +18 -18
- package/build/import/value/transform/encode.mjs +18 -18
- package/build/import/value/transform/has.mjs +28 -28
- package/build/require/compiler/compiler.js +62 -62
- package/build/require/errors/errors.js +62 -62
- package/build/require/index.d.ts +6 -6
- package/build/require/index.js +6 -2
- package/build/require/type/indexed/indexed-property-keys.d.ts +2 -2
- package/build/require/type/indexed/indexed-property-keys.js +4 -9
- package/build/require/type/intrinsic/intrinsic.js +2 -2
- package/build/require/type/optional/index.d.ts +1 -0
- package/build/require/type/optional/index.js +1 -0
- package/build/require/type/optional/optional-from-mapped-result.d.ts +12 -0
- package/build/require/type/optional/optional-from-mapped-result.js +22 -0
- package/build/require/type/optional/optional.d.ts +19 -2
- package/build/require/type/optional/optional.js +18 -2
- package/build/require/type/readonly/index.d.ts +1 -0
- package/build/require/type/readonly/index.js +1 -0
- package/build/require/type/readonly/readonly-from-mapped-result.d.ts +12 -0
- package/build/require/type/readonly/readonly-from-mapped-result.js +22 -0
- package/build/require/type/readonly/readonly.d.ts +18 -1
- package/build/require/type/readonly/readonly.js +18 -2
- package/build/require/type/record/record.d.ts +2 -2
- package/build/require/type/record/record.js +1 -2
- package/build/require/type/schema/schema.d.ts +1 -1
- package/build/require/type/symbol/symbol.d.ts +1 -1
- package/build/require/type/template-literal/finite.d.ts +7 -5
- package/build/require/type/template-literal/finite.js +16 -6
- package/build/require/type/template-literal/generate.d.ts +14 -8
- package/build/require/type/template-literal/generate.js +22 -11
- package/build/require/type/template-literal/index.d.ts +1 -1
- package/build/require/type/template-literal/index.js +1 -1
- package/build/require/type/template-literal/{parser.js → parse.js} +7 -2
- package/build/require/type/template-literal/syntax.d.ts +1 -1
- package/build/require/type/template-literal/syntax.js +0 -1
- package/build/require/type/template-literal/template-literal.d.ts +2 -2
- package/build/require/type/template-literal/template-literal.js +1 -1
- package/build/require/type/template-literal/union.d.ts +2 -2
- package/build/require/type/template-literal/union.js +5 -10
- package/build/require/type/type/json.d.ts +19 -7
- package/build/require/type/type/json.js +5 -5
- package/build/require/value/cast/cast.js +20 -20
- package/build/require/value/check/check.js +62 -62
- package/build/require/value/clean/clean.js +16 -16
- package/build/require/value/convert/convert.js +36 -36
- package/build/require/value/create/create.js +65 -66
- package/build/require/value/default/default.js +16 -16
- package/build/require/value/transform/decode.js +18 -18
- package/build/require/value/transform/encode.js +18 -18
- package/build/require/value/transform/has.js +28 -28
- package/package.json +1 -1
- package/readme.md +52 -52
- /package/build/import/type/template-literal/{parser.d.mts → parse.d.mts} +0 -0
- /package/build/require/type/template-literal/{parser.d.ts → parse.d.ts} +0 -0
|
@@ -48,13 +48,13 @@ function Default(schema, value) {
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
// prettier-ignore
|
|
51
|
-
function
|
|
51
|
+
function FromArray(schema, references, value) {
|
|
52
52
|
return (IsArray(value))
|
|
53
53
|
? Default(schema, value.map((value) => Visit(schema.items, references, value)))
|
|
54
54
|
: Default(schema, value);
|
|
55
55
|
}
|
|
56
56
|
// prettier-ignore
|
|
57
|
-
function
|
|
57
|
+
function FromIntersect(schema, references, value) {
|
|
58
58
|
if (!IsPlainObject(value) || IsValueType(value))
|
|
59
59
|
return Default(schema, value);
|
|
60
60
|
const knownKeys = KeyOfPropertyKeys(schema);
|
|
@@ -75,11 +75,11 @@ function TIntersect(schema, references, value) {
|
|
|
75
75
|
}, knownProperties);
|
|
76
76
|
return Default(schema, unknownProperties);
|
|
77
77
|
}
|
|
78
|
-
function
|
|
78
|
+
function FromNot(schema, references, value) {
|
|
79
79
|
return Default(schema, Visit(schema.not, references, value));
|
|
80
80
|
}
|
|
81
81
|
// prettier-ignore
|
|
82
|
-
function
|
|
82
|
+
function FromObject(schema, references, value) {
|
|
83
83
|
if (!IsPlainObject(value))
|
|
84
84
|
return Default(schema, value);
|
|
85
85
|
const knownKeys = KeyOfPropertyKeys(schema);
|
|
@@ -101,7 +101,7 @@ function TObject(schema, references, value) {
|
|
|
101
101
|
return Default(schema, unknownProperties);
|
|
102
102
|
}
|
|
103
103
|
// prettier-ignore
|
|
104
|
-
function
|
|
104
|
+
function FromRecord(schema, references, value) {
|
|
105
105
|
if (!IsPlainObject(value))
|
|
106
106
|
return Default(schema, value);
|
|
107
107
|
const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];
|
|
@@ -124,23 +124,23 @@ function TRecord(schema, references, value) {
|
|
|
124
124
|
return Default(schema, unknownProperties);
|
|
125
125
|
}
|
|
126
126
|
// prettier-ignore
|
|
127
|
-
function
|
|
127
|
+
function FromRef(schema, references, value) {
|
|
128
128
|
const target = Deref(schema, references);
|
|
129
129
|
return Default(schema, Visit(target, references, value));
|
|
130
130
|
}
|
|
131
131
|
// prettier-ignore
|
|
132
|
-
function
|
|
132
|
+
function FromThis(schema, references, value) {
|
|
133
133
|
const target = Deref(schema, references);
|
|
134
134
|
return Default(schema, Visit(target, references, value));
|
|
135
135
|
}
|
|
136
136
|
// prettier-ignore
|
|
137
|
-
function
|
|
137
|
+
function FromTuple(schema, references, value) {
|
|
138
138
|
return (IsArray(value) && IsArray(schema.items))
|
|
139
139
|
? Default(schema, schema.items.map((schema, index) => Visit(schema, references, value[index])))
|
|
140
140
|
: Default(schema, value);
|
|
141
141
|
}
|
|
142
142
|
// prettier-ignore
|
|
143
|
-
function
|
|
143
|
+
function FromUnion(schema, references, value) {
|
|
144
144
|
for (const subschema of schema.anyOf) {
|
|
145
145
|
if (!Check(subschema, references, value))
|
|
146
146
|
continue;
|
|
@@ -156,25 +156,25 @@ function Visit(schema, references, value) {
|
|
|
156
156
|
const schema_ = schema;
|
|
157
157
|
switch (schema[Kind]) {
|
|
158
158
|
case 'Array':
|
|
159
|
-
return
|
|
159
|
+
return FromArray(schema_, references_, value);
|
|
160
160
|
case 'Intersect':
|
|
161
|
-
return
|
|
161
|
+
return FromIntersect(schema_, references_, value);
|
|
162
162
|
case 'Not':
|
|
163
|
-
return
|
|
163
|
+
return FromNot(schema_, references_, value);
|
|
164
164
|
case 'Object':
|
|
165
|
-
return
|
|
165
|
+
return FromObject(schema_, references_, value);
|
|
166
166
|
case 'Record':
|
|
167
|
-
return
|
|
167
|
+
return FromRecord(schema_, references_, value);
|
|
168
168
|
case 'Ref':
|
|
169
|
-
return
|
|
169
|
+
return FromRef(schema_, references_, value);
|
|
170
170
|
case 'Symbol':
|
|
171
171
|
return Default(schema_, value);
|
|
172
172
|
case 'This':
|
|
173
|
-
return
|
|
173
|
+
return FromThis(schema_, references_, value);
|
|
174
174
|
case 'Tuple':
|
|
175
|
-
return
|
|
175
|
+
return FromTuple(schema_, references_, value);
|
|
176
176
|
case 'Union':
|
|
177
|
-
return
|
|
177
|
+
return FromUnion(schema_, references_, value);
|
|
178
178
|
default:
|
|
179
179
|
return Default(schema_, value);
|
|
180
180
|
}
|
|
@@ -47,14 +47,14 @@ function Default(schema, value) {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
// prettier-ignore
|
|
50
|
-
function
|
|
50
|
+
function FromArray(schema, references, value) {
|
|
51
51
|
const defaulted = Default(schema, value);
|
|
52
52
|
return IsArray(defaulted)
|
|
53
53
|
? defaulted.map((value) => Visit(schema.items, references, value))
|
|
54
54
|
: defaulted;
|
|
55
55
|
}
|
|
56
56
|
// prettier-ignore
|
|
57
|
-
function
|
|
57
|
+
function FromIntersect(schema, references, value) {
|
|
58
58
|
const defaulted = Default(schema, value);
|
|
59
59
|
if (!IsPlainObject(value) || IsValueType(value))
|
|
60
60
|
return defaulted;
|
|
@@ -76,11 +76,11 @@ function TIntersect(schema, references, value) {
|
|
|
76
76
|
}, knownProperties);
|
|
77
77
|
}
|
|
78
78
|
// prettier-ignore
|
|
79
|
-
function
|
|
79
|
+
function FromNot(schema, references, value) {
|
|
80
80
|
return Default(schema.not, Default(schema, value));
|
|
81
81
|
}
|
|
82
82
|
// prettier-ignore
|
|
83
|
-
function
|
|
83
|
+
function FromObject(schema, references, value) {
|
|
84
84
|
const defaulted = Default(schema, value);
|
|
85
85
|
if (!IsPlainObject(value))
|
|
86
86
|
return defaulted;
|
|
@@ -102,7 +102,7 @@ function TObject(schema, references, value) {
|
|
|
102
102
|
}, knownProperties);
|
|
103
103
|
}
|
|
104
104
|
// prettier-ignore
|
|
105
|
-
function
|
|
105
|
+
function FromRecord(schema, references, value) {
|
|
106
106
|
const defaulted = Default(schema, value);
|
|
107
107
|
if (!IsPlainObject(value))
|
|
108
108
|
return defaulted;
|
|
@@ -125,24 +125,24 @@ function TRecord(schema, references, value) {
|
|
|
125
125
|
}, knownProperties);
|
|
126
126
|
}
|
|
127
127
|
// prettier-ignore
|
|
128
|
-
function
|
|
128
|
+
function FromRef(schema, references, value) {
|
|
129
129
|
const target = Deref(schema, references);
|
|
130
130
|
const resolved = Visit(target, references, value);
|
|
131
131
|
return Default(schema, resolved);
|
|
132
132
|
}
|
|
133
133
|
// prettier-ignore
|
|
134
|
-
function
|
|
134
|
+
function FromThis(schema, references, value) {
|
|
135
135
|
const target = Deref(schema, references);
|
|
136
136
|
const resolved = Visit(target, references, value);
|
|
137
137
|
return Default(schema, resolved);
|
|
138
138
|
}
|
|
139
139
|
// prettier-ignore
|
|
140
|
-
function
|
|
140
|
+
function FromTuple(schema, references, value) {
|
|
141
141
|
const value1 = Default(schema, value);
|
|
142
142
|
return IsArray(schema.items) ? schema.items.map((schema, index) => Visit(schema, references, value1[index])) : [];
|
|
143
143
|
}
|
|
144
144
|
// prettier-ignore
|
|
145
|
-
function
|
|
145
|
+
function FromUnion(schema, references, value) {
|
|
146
146
|
// test value against union variants
|
|
147
147
|
for (const subschema of schema.anyOf) {
|
|
148
148
|
if (!Check(subschema, references, value))
|
|
@@ -165,23 +165,23 @@ function Visit(schema, references, value) {
|
|
|
165
165
|
const schema_ = schema;
|
|
166
166
|
switch (schema[Kind]) {
|
|
167
167
|
case 'Array':
|
|
168
|
-
return
|
|
168
|
+
return FromArray(schema_, references_, value);
|
|
169
169
|
case 'Intersect':
|
|
170
|
-
return
|
|
170
|
+
return FromIntersect(schema_, references_, value);
|
|
171
171
|
case 'Not':
|
|
172
|
-
return
|
|
172
|
+
return FromNot(schema_, references_, value);
|
|
173
173
|
case 'Object':
|
|
174
|
-
return
|
|
174
|
+
return FromObject(schema_, references_, value);
|
|
175
175
|
case 'Record':
|
|
176
|
-
return
|
|
176
|
+
return FromRecord(schema_, references_, value);
|
|
177
177
|
case 'Ref':
|
|
178
|
-
return
|
|
178
|
+
return FromRef(schema_, references_, value);
|
|
179
179
|
case 'This':
|
|
180
|
-
return
|
|
180
|
+
return FromThis(schema_, references_, value);
|
|
181
181
|
case 'Tuple':
|
|
182
|
-
return
|
|
182
|
+
return FromTuple(schema_, references_, value);
|
|
183
183
|
case 'Union':
|
|
184
|
-
return
|
|
184
|
+
return FromUnion(schema_, references_, value);
|
|
185
185
|
default:
|
|
186
186
|
return Default(schema_, value);
|
|
187
187
|
}
|
|
@@ -9,67 +9,67 @@ import { IsTransform, IsSchema } from '../../type/guard/type.mjs';
|
|
|
9
9
|
// ------------------------------------------------------------------
|
|
10
10
|
import { IsString, IsUndefined } from '../guard/index.mjs';
|
|
11
11
|
// prettier-ignore
|
|
12
|
-
function
|
|
12
|
+
function FromArray(schema, references) {
|
|
13
13
|
return IsTransform(schema) || Visit(schema.items, references);
|
|
14
14
|
}
|
|
15
15
|
// prettier-ignore
|
|
16
|
-
function
|
|
16
|
+
function FromAsyncIterator(schema, references) {
|
|
17
17
|
return IsTransform(schema) || Visit(schema.items, references);
|
|
18
18
|
}
|
|
19
19
|
// prettier-ignore
|
|
20
|
-
function
|
|
20
|
+
function FromConstructor(schema, references) {
|
|
21
21
|
return IsTransform(schema) || Visit(schema.returns, references) || schema.parameters.some((schema) => Visit(schema, references));
|
|
22
22
|
}
|
|
23
23
|
// prettier-ignore
|
|
24
|
-
function
|
|
24
|
+
function FromFunction(schema, references) {
|
|
25
25
|
return IsTransform(schema) || Visit(schema.returns, references) || schema.parameters.some((schema) => Visit(schema, references));
|
|
26
26
|
}
|
|
27
27
|
// prettier-ignore
|
|
28
|
-
function
|
|
28
|
+
function FromIntersect(schema, references) {
|
|
29
29
|
return IsTransform(schema) || IsTransform(schema.unevaluatedProperties) || schema.allOf.some((schema) => Visit(schema, references));
|
|
30
30
|
}
|
|
31
31
|
// prettier-ignore
|
|
32
|
-
function
|
|
32
|
+
function FromIterator(schema, references) {
|
|
33
33
|
return IsTransform(schema) || Visit(schema.items, references);
|
|
34
34
|
}
|
|
35
35
|
// prettier-ignore
|
|
36
|
-
function
|
|
36
|
+
function FromNot(schema, references) {
|
|
37
37
|
return IsTransform(schema) || Visit(schema.not, references);
|
|
38
38
|
}
|
|
39
39
|
// prettier-ignore
|
|
40
|
-
function
|
|
40
|
+
function FromObject(schema, references) {
|
|
41
41
|
return (IsTransform(schema) ||
|
|
42
42
|
Object.values(schema.properties).some((schema) => Visit(schema, references)) ||
|
|
43
43
|
(IsSchema(schema.additionalProperties) && Visit(schema.additionalProperties, references)));
|
|
44
44
|
}
|
|
45
45
|
// prettier-ignore
|
|
46
|
-
function
|
|
46
|
+
function FromPromise(schema, references) {
|
|
47
47
|
return IsTransform(schema) || Visit(schema.item, references);
|
|
48
48
|
}
|
|
49
49
|
// prettier-ignore
|
|
50
|
-
function
|
|
50
|
+
function FromRecord(schema, references) {
|
|
51
51
|
const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];
|
|
52
52
|
const property = schema.patternProperties[pattern];
|
|
53
53
|
return IsTransform(schema) || Visit(property, references) || (IsSchema(schema.additionalProperties) && IsTransform(schema.additionalProperties));
|
|
54
54
|
}
|
|
55
55
|
// prettier-ignore
|
|
56
|
-
function
|
|
56
|
+
function FromRef(schema, references) {
|
|
57
57
|
if (IsTransform(schema))
|
|
58
58
|
return true;
|
|
59
59
|
return Visit(Deref(schema, references), references);
|
|
60
60
|
}
|
|
61
61
|
// prettier-ignore
|
|
62
|
-
function
|
|
62
|
+
function FromThis(schema, references) {
|
|
63
63
|
if (IsTransform(schema))
|
|
64
64
|
return true;
|
|
65
65
|
return Visit(Deref(schema, references), references);
|
|
66
66
|
}
|
|
67
67
|
// prettier-ignore
|
|
68
|
-
function
|
|
68
|
+
function FromTuple(schema, references) {
|
|
69
69
|
return IsTransform(schema) || (!IsUndefined(schema.items) && schema.items.some((schema) => Visit(schema, references)));
|
|
70
70
|
}
|
|
71
71
|
// prettier-ignore
|
|
72
|
-
function
|
|
72
|
+
function FromUnion(schema, references) {
|
|
73
73
|
return IsTransform(schema) || schema.anyOf.some((schema) => Visit(schema, references));
|
|
74
74
|
}
|
|
75
75
|
// prettier-ignore
|
|
@@ -82,33 +82,33 @@ function Visit(schema, references) {
|
|
|
82
82
|
visited.add(schema.$id);
|
|
83
83
|
switch (schema[Kind]) {
|
|
84
84
|
case 'Array':
|
|
85
|
-
return
|
|
85
|
+
return FromArray(schema_, references_);
|
|
86
86
|
case 'AsyncIterator':
|
|
87
|
-
return
|
|
87
|
+
return FromAsyncIterator(schema_, references_);
|
|
88
88
|
case 'Constructor':
|
|
89
|
-
return
|
|
89
|
+
return FromConstructor(schema_, references_);
|
|
90
90
|
case 'Function':
|
|
91
|
-
return
|
|
91
|
+
return FromFunction(schema_, references_);
|
|
92
92
|
case 'Intersect':
|
|
93
|
-
return
|
|
93
|
+
return FromIntersect(schema_, references_);
|
|
94
94
|
case 'Iterator':
|
|
95
|
-
return
|
|
95
|
+
return FromIterator(schema_, references_);
|
|
96
96
|
case 'Not':
|
|
97
|
-
return
|
|
97
|
+
return FromNot(schema_, references_);
|
|
98
98
|
case 'Object':
|
|
99
|
-
return
|
|
99
|
+
return FromObject(schema_, references_);
|
|
100
100
|
case 'Promise':
|
|
101
|
-
return
|
|
101
|
+
return FromPromise(schema_, references_);
|
|
102
102
|
case 'Record':
|
|
103
|
-
return
|
|
103
|
+
return FromRecord(schema_, references_);
|
|
104
104
|
case 'Ref':
|
|
105
|
-
return
|
|
105
|
+
return FromRef(schema_, references_);
|
|
106
106
|
case 'This':
|
|
107
|
-
return
|
|
107
|
+
return FromThis(schema_, references_);
|
|
108
108
|
case 'Tuple':
|
|
109
|
-
return
|
|
109
|
+
return FromTuple(schema_, references_);
|
|
110
110
|
case 'Union':
|
|
111
|
-
return
|
|
111
|
+
return FromUnion(schema_, references_);
|
|
112
112
|
default:
|
|
113
113
|
return IsTransform(schema);
|
|
114
114
|
}
|
|
@@ -196,10 +196,10 @@ var TypeCompiler;
|
|
|
196
196
|
// ----------------------------------------------------------------
|
|
197
197
|
// Types
|
|
198
198
|
// ----------------------------------------------------------------
|
|
199
|
-
function*
|
|
199
|
+
function* FromAny(schema, references, value) {
|
|
200
200
|
yield 'true';
|
|
201
201
|
}
|
|
202
|
-
function*
|
|
202
|
+
function* FromArray(schema, references, value) {
|
|
203
203
|
yield `Array.isArray(${value})`;
|
|
204
204
|
const [parameter, accumulator] = [CreateParameter('value', 'any'), CreateParameter('acc', 'number')];
|
|
205
205
|
if ((0, index_10.IsNumber)(schema.maxItems))
|
|
@@ -223,10 +223,10 @@ var TypeCompiler;
|
|
|
223
223
|
yield `((${parameter}) => { ${block} )(${value})`;
|
|
224
224
|
}
|
|
225
225
|
}
|
|
226
|
-
function*
|
|
226
|
+
function* FromAsyncIterator(schema, references, value) {
|
|
227
227
|
yield `(typeof value === 'object' && Symbol.asyncIterator in ${value})`;
|
|
228
228
|
}
|
|
229
|
-
function*
|
|
229
|
+
function* FromBigInt(schema, references, value) {
|
|
230
230
|
yield `(typeof ${value} === 'bigint')`;
|
|
231
231
|
if ((0, index_10.IsBigInt)(schema.exclusiveMaximum))
|
|
232
232
|
yield `${value} < BigInt(${schema.exclusiveMaximum})`;
|
|
@@ -239,13 +239,13 @@ var TypeCompiler;
|
|
|
239
239
|
if ((0, index_10.IsBigInt)(schema.multipleOf))
|
|
240
240
|
yield `(${value} % BigInt(${schema.multipleOf})) === 0`;
|
|
241
241
|
}
|
|
242
|
-
function*
|
|
242
|
+
function* FromBoolean(schema, references, value) {
|
|
243
243
|
yield `(typeof ${value} === 'boolean')`;
|
|
244
244
|
}
|
|
245
|
-
function*
|
|
245
|
+
function* FromConstructor(schema, references, value) {
|
|
246
246
|
yield* Visit(schema.returns, references, `${value}.prototype`);
|
|
247
247
|
}
|
|
248
|
-
function*
|
|
248
|
+
function* FromDate(schema, references, value) {
|
|
249
249
|
yield `(${value} instanceof Date) && Number.isFinite(${value}.getTime())`;
|
|
250
250
|
if ((0, index_10.IsNumber)(schema.exclusiveMaximumTimestamp))
|
|
251
251
|
yield `${value}.getTime() < ${schema.exclusiveMaximumTimestamp}`;
|
|
@@ -258,10 +258,10 @@ var TypeCompiler;
|
|
|
258
258
|
if ((0, index_10.IsNumber)(schema.multipleOfTimestamp))
|
|
259
259
|
yield `(${value}.getTime() % ${schema.multipleOfTimestamp}) === 0`;
|
|
260
260
|
}
|
|
261
|
-
function*
|
|
261
|
+
function* FromFunction(schema, references, value) {
|
|
262
262
|
yield `(typeof ${value} === 'function')`;
|
|
263
263
|
}
|
|
264
|
-
function*
|
|
264
|
+
function* FromInteger(schema, references, value) {
|
|
265
265
|
yield `(typeof ${value} === 'number' && Number.isInteger(${value}))`;
|
|
266
266
|
if ((0, index_10.IsNumber)(schema.exclusiveMaximum))
|
|
267
267
|
yield `${value} < ${schema.exclusiveMaximum}`;
|
|
@@ -274,7 +274,7 @@ var TypeCompiler;
|
|
|
274
274
|
if ((0, index_10.IsNumber)(schema.multipleOf))
|
|
275
275
|
yield `(${value} % ${schema.multipleOf}) === 0`;
|
|
276
276
|
}
|
|
277
|
-
function*
|
|
277
|
+
function* FromIntersect(schema, references, value) {
|
|
278
278
|
const check1 = schema.allOf.map((schema) => CreateExpression(schema, references, value)).join(' && ');
|
|
279
279
|
if (schema.unevaluatedProperties === false) {
|
|
280
280
|
const keyCheck = CreateVariable(`${new RegExp((0, index_8.KeyOfPattern)(schema))};`);
|
|
@@ -290,10 +290,10 @@ var TypeCompiler;
|
|
|
290
290
|
yield `(${check1})`;
|
|
291
291
|
}
|
|
292
292
|
}
|
|
293
|
-
function*
|
|
293
|
+
function* FromIterator(schema, references, value) {
|
|
294
294
|
yield `(typeof value === 'object' && Symbol.iterator in ${value})`;
|
|
295
295
|
}
|
|
296
|
-
function*
|
|
296
|
+
function* FromLiteral(schema, references, value) {
|
|
297
297
|
if (typeof schema.const === 'number' || typeof schema.const === 'boolean') {
|
|
298
298
|
yield `(${value} === ${schema.const})`;
|
|
299
299
|
}
|
|
@@ -301,17 +301,17 @@ var TypeCompiler;
|
|
|
301
301
|
yield `(${value} === '${LiteralString.Escape(schema.const)}')`;
|
|
302
302
|
}
|
|
303
303
|
}
|
|
304
|
-
function*
|
|
304
|
+
function* FromNever(schema, references, value) {
|
|
305
305
|
yield `false`;
|
|
306
306
|
}
|
|
307
|
-
function*
|
|
307
|
+
function* FromNot(schema, references, value) {
|
|
308
308
|
const expression = CreateExpression(schema.not, references, value);
|
|
309
309
|
yield `(!${expression})`;
|
|
310
310
|
}
|
|
311
|
-
function*
|
|
311
|
+
function* FromNull(schema, references, value) {
|
|
312
312
|
yield `(${value} === null)`;
|
|
313
313
|
}
|
|
314
|
-
function*
|
|
314
|
+
function* FromNumber(schema, references, value) {
|
|
315
315
|
yield Policy.IsNumberLike(value);
|
|
316
316
|
if ((0, index_10.IsNumber)(schema.exclusiveMaximum))
|
|
317
317
|
yield `${value} < ${schema.exclusiveMaximum}`;
|
|
@@ -324,7 +324,7 @@ var TypeCompiler;
|
|
|
324
324
|
if ((0, index_10.IsNumber)(schema.multipleOf))
|
|
325
325
|
yield `(${value} % ${schema.multipleOf}) === 0`;
|
|
326
326
|
}
|
|
327
|
-
function*
|
|
327
|
+
function* FromObject(schema, references, value) {
|
|
328
328
|
yield Policy.IsObjectLike(value);
|
|
329
329
|
if ((0, index_10.IsNumber)(schema.minProperties))
|
|
330
330
|
yield `Object.getOwnPropertyNames(${value}).length >= ${schema.minProperties}`;
|
|
@@ -359,10 +359,10 @@ var TypeCompiler;
|
|
|
359
359
|
yield `(Object.getOwnPropertyNames(${value}).every(key => ${keys}.includes(key) || ${expression}))`;
|
|
360
360
|
}
|
|
361
361
|
}
|
|
362
|
-
function*
|
|
362
|
+
function* FromPromise(schema, references, value) {
|
|
363
363
|
yield `(typeof value === 'object' && typeof ${value}.then === 'function')`;
|
|
364
364
|
}
|
|
365
|
-
function*
|
|
365
|
+
function* FromRecord(schema, references, value) {
|
|
366
366
|
yield Policy.IsRecordLike(value);
|
|
367
367
|
if ((0, index_10.IsNumber)(schema.minProperties))
|
|
368
368
|
yield `Object.getOwnPropertyNames(${value}).length >= ${schema.minProperties}`;
|
|
@@ -375,7 +375,7 @@ var TypeCompiler;
|
|
|
375
375
|
const expression = `(${variable}.test(key) ? ${check1} : ${check2})`;
|
|
376
376
|
yield `(Object.entries(${value}).every(([key, value]) => ${expression}))`;
|
|
377
377
|
}
|
|
378
|
-
function*
|
|
378
|
+
function* FromRef(schema, references, value) {
|
|
379
379
|
const target = (0, index_4.Deref)(schema, references);
|
|
380
380
|
// Reference: If we have seen this reference before we can just yield and return the function call.
|
|
381
381
|
// If this isn't the case we defer to visit to generate and set the function for subsequent passes.
|
|
@@ -383,7 +383,7 @@ var TypeCompiler;
|
|
|
383
383
|
return yield `${CreateFunctionName(schema.$ref)}(${value})`;
|
|
384
384
|
yield* Visit(target, references, value);
|
|
385
385
|
}
|
|
386
|
-
function*
|
|
386
|
+
function* FromString(schema, references, value) {
|
|
387
387
|
yield `(typeof ${value} === 'string')`;
|
|
388
388
|
if ((0, index_10.IsNumber)(schema.maxLength))
|
|
389
389
|
yield `${value}.length <= ${schema.maxLength}`;
|
|
@@ -397,19 +397,19 @@ var TypeCompiler;
|
|
|
397
397
|
yield `format('${schema.format}', ${value})`;
|
|
398
398
|
}
|
|
399
399
|
}
|
|
400
|
-
function*
|
|
400
|
+
function* FromSymbol(schema, references, value) {
|
|
401
401
|
yield `(typeof ${value} === 'symbol')`;
|
|
402
402
|
}
|
|
403
|
-
function*
|
|
403
|
+
function* FromTemplateLiteral(schema, references, value) {
|
|
404
404
|
yield `(typeof ${value} === 'string')`;
|
|
405
405
|
const variable = CreateVariable(`${new RegExp(schema.pattern)};`);
|
|
406
406
|
yield `${variable}.test(${value})`;
|
|
407
407
|
}
|
|
408
|
-
function*
|
|
408
|
+
function* FromThis(schema, references, value) {
|
|
409
409
|
// Note: This types are assured to be hoisted prior to this call. Just yield the function.
|
|
410
410
|
yield `${CreateFunctionName(schema.$ref)}(${value})`;
|
|
411
411
|
}
|
|
412
|
-
function*
|
|
412
|
+
function* FromTuple(schema, references, value) {
|
|
413
413
|
yield `Array.isArray(${value})`;
|
|
414
414
|
if (schema.items === undefined)
|
|
415
415
|
return yield `${value}.length === 0`;
|
|
@@ -419,27 +419,27 @@ var TypeCompiler;
|
|
|
419
419
|
yield `${expression}`;
|
|
420
420
|
}
|
|
421
421
|
}
|
|
422
|
-
function*
|
|
422
|
+
function* FromUndefined(schema, references, value) {
|
|
423
423
|
yield `${value} === undefined`;
|
|
424
424
|
}
|
|
425
|
-
function*
|
|
425
|
+
function* FromUnion(schema, references, value) {
|
|
426
426
|
const expressions = schema.anyOf.map((schema) => CreateExpression(schema, references, value));
|
|
427
427
|
yield `(${expressions.join(' || ')})`;
|
|
428
428
|
}
|
|
429
|
-
function*
|
|
429
|
+
function* FromUint8Array(schema, references, value) {
|
|
430
430
|
yield `${value} instanceof Uint8Array`;
|
|
431
431
|
if ((0, index_10.IsNumber)(schema.maxByteLength))
|
|
432
432
|
yield `(${value}.length <= ${schema.maxByteLength})`;
|
|
433
433
|
if ((0, index_10.IsNumber)(schema.minByteLength))
|
|
434
434
|
yield `(${value}.length >= ${schema.minByteLength})`;
|
|
435
435
|
}
|
|
436
|
-
function*
|
|
436
|
+
function* FromUnknown(schema, references, value) {
|
|
437
437
|
yield 'true';
|
|
438
438
|
}
|
|
439
|
-
function*
|
|
439
|
+
function* FromVoid(schema, references, value) {
|
|
440
440
|
yield Policy.IsVoidLike(value);
|
|
441
441
|
}
|
|
442
|
-
function*
|
|
442
|
+
function* FromKind(schema, references, value) {
|
|
443
443
|
const instance = state.instances.size;
|
|
444
444
|
state.instances.set(instance, schema);
|
|
445
445
|
yield `kind('${schema[index_6.Kind]}', ${instance}, ${value})`;
|
|
@@ -463,69 +463,69 @@ var TypeCompiler;
|
|
|
463
463
|
}
|
|
464
464
|
switch (schema_[index_6.Kind]) {
|
|
465
465
|
case 'Any':
|
|
466
|
-
return yield*
|
|
466
|
+
return yield* FromAny(schema_, references_, value);
|
|
467
467
|
case 'Array':
|
|
468
|
-
return yield*
|
|
468
|
+
return yield* FromArray(schema_, references_, value);
|
|
469
469
|
case 'AsyncIterator':
|
|
470
|
-
return yield*
|
|
470
|
+
return yield* FromAsyncIterator(schema_, references_, value);
|
|
471
471
|
case 'BigInt':
|
|
472
|
-
return yield*
|
|
472
|
+
return yield* FromBigInt(schema_, references_, value);
|
|
473
473
|
case 'Boolean':
|
|
474
|
-
return yield*
|
|
474
|
+
return yield* FromBoolean(schema_, references_, value);
|
|
475
475
|
case 'Constructor':
|
|
476
|
-
return yield*
|
|
476
|
+
return yield* FromConstructor(schema_, references_, value);
|
|
477
477
|
case 'Date':
|
|
478
|
-
return yield*
|
|
478
|
+
return yield* FromDate(schema_, references_, value);
|
|
479
479
|
case 'Function':
|
|
480
|
-
return yield*
|
|
480
|
+
return yield* FromFunction(schema_, references_, value);
|
|
481
481
|
case 'Integer':
|
|
482
|
-
return yield*
|
|
482
|
+
return yield* FromInteger(schema_, references_, value);
|
|
483
483
|
case 'Intersect':
|
|
484
|
-
return yield*
|
|
484
|
+
return yield* FromIntersect(schema_, references_, value);
|
|
485
485
|
case 'Iterator':
|
|
486
|
-
return yield*
|
|
486
|
+
return yield* FromIterator(schema_, references_, value);
|
|
487
487
|
case 'Literal':
|
|
488
|
-
return yield*
|
|
488
|
+
return yield* FromLiteral(schema_, references_, value);
|
|
489
489
|
case 'Never':
|
|
490
|
-
return yield*
|
|
490
|
+
return yield* FromNever(schema_, references_, value);
|
|
491
491
|
case 'Not':
|
|
492
|
-
return yield*
|
|
492
|
+
return yield* FromNot(schema_, references_, value);
|
|
493
493
|
case 'Null':
|
|
494
|
-
return yield*
|
|
494
|
+
return yield* FromNull(schema_, references_, value);
|
|
495
495
|
case 'Number':
|
|
496
|
-
return yield*
|
|
496
|
+
return yield* FromNumber(schema_, references_, value);
|
|
497
497
|
case 'Object':
|
|
498
|
-
return yield*
|
|
498
|
+
return yield* FromObject(schema_, references_, value);
|
|
499
499
|
case 'Promise':
|
|
500
|
-
return yield*
|
|
500
|
+
return yield* FromPromise(schema_, references_, value);
|
|
501
501
|
case 'Record':
|
|
502
|
-
return yield*
|
|
502
|
+
return yield* FromRecord(schema_, references_, value);
|
|
503
503
|
case 'Ref':
|
|
504
|
-
return yield*
|
|
504
|
+
return yield* FromRef(schema_, references_, value);
|
|
505
505
|
case 'String':
|
|
506
|
-
return yield*
|
|
506
|
+
return yield* FromString(schema_, references_, value);
|
|
507
507
|
case 'Symbol':
|
|
508
|
-
return yield*
|
|
508
|
+
return yield* FromSymbol(schema_, references_, value);
|
|
509
509
|
case 'TemplateLiteral':
|
|
510
|
-
return yield*
|
|
510
|
+
return yield* FromTemplateLiteral(schema_, references_, value);
|
|
511
511
|
case 'This':
|
|
512
|
-
return yield*
|
|
512
|
+
return yield* FromThis(schema_, references_, value);
|
|
513
513
|
case 'Tuple':
|
|
514
|
-
return yield*
|
|
514
|
+
return yield* FromTuple(schema_, references_, value);
|
|
515
515
|
case 'Undefined':
|
|
516
|
-
return yield*
|
|
516
|
+
return yield* FromUndefined(schema_, references_, value);
|
|
517
517
|
case 'Union':
|
|
518
|
-
return yield*
|
|
518
|
+
return yield* FromUnion(schema_, references_, value);
|
|
519
519
|
case 'Uint8Array':
|
|
520
|
-
return yield*
|
|
520
|
+
return yield* FromUint8Array(schema_, references_, value);
|
|
521
521
|
case 'Unknown':
|
|
522
|
-
return yield*
|
|
522
|
+
return yield* FromUnknown(schema_, references_, value);
|
|
523
523
|
case 'Void':
|
|
524
|
-
return yield*
|
|
524
|
+
return yield* FromVoid(schema_, references_, value);
|
|
525
525
|
default:
|
|
526
526
|
if (!index_7.TypeRegistry.Has(schema_[index_6.Kind]))
|
|
527
527
|
throw new TypeCompilerUnknownTypeError(schema);
|
|
528
|
-
return yield*
|
|
528
|
+
return yield* FromKind(schema_, references_, value);
|
|
529
529
|
}
|
|
530
530
|
}
|
|
531
531
|
// ----------------------------------------------------------------
|