@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
|
@@ -22,10 +22,10 @@ import { type TMappedKey } from '../mapped/index.mjs';
|
|
|
22
22
|
import { type TNumber, type NumberOptions } from '../number/index.mjs';
|
|
23
23
|
import { type TObject, type TProperties, type ObjectOptions } from '../object/index.mjs';
|
|
24
24
|
import { type TOmit, type TOmitFromMappedKey } from '../omit/index.mjs';
|
|
25
|
-
import { type
|
|
25
|
+
import { type TOptionalWithFlag, type TOptionalFromMappedResult } from '../optional/index.mjs';
|
|
26
26
|
import { type TPartial, type TPartialFromMappedResult } from '../partial/index.mjs';
|
|
27
27
|
import { type TPick, type TPickFromMappedKey } from '../pick/index.mjs';
|
|
28
|
-
import { type
|
|
28
|
+
import { type TReadonlyWithFlag, type TReadonlyFromMappedResult } from '../readonly/index.mjs';
|
|
29
29
|
import { type TReadonlyOptional } from '../readonly-optional/index.mjs';
|
|
30
30
|
import { type TRecordOrObject } from '../record/index.mjs';
|
|
31
31
|
import { type TRecursive, type TThis } from '../recursive/index.mjs';
|
|
@@ -34,7 +34,7 @@ import { type TRequired, type TRequiredFromMappedResult } from '../required/inde
|
|
|
34
34
|
import { type TRest } from '../rest/index.mjs';
|
|
35
35
|
import { type TSchema, type SchemaOptions } from '../schema/index.mjs';
|
|
36
36
|
import { type TString, type StringOptions } from '../string/index.mjs';
|
|
37
|
-
import { type TTemplateLiteral, type TTemplateLiteralKind, type
|
|
37
|
+
import { type TTemplateLiteral, type TTemplateLiteralKind, type TTemplateLiteralSyntax } from '../template-literal/index.mjs';
|
|
38
38
|
import { TransformDecodeBuilder } from '../transform/index.mjs';
|
|
39
39
|
import { type TTuple } from '../tuple/index.mjs';
|
|
40
40
|
import { Union } from '../union/index.mjs';
|
|
@@ -47,9 +47,21 @@ export declare class JsonTypeBuilder {
|
|
|
47
47
|
/** `[Json]` Creates a Readonly and Optional property */
|
|
48
48
|
ReadonlyOptional<T extends TSchema>(schema: T): TReadonlyOptional<T>;
|
|
49
49
|
/** `[Json]` Creates a Readonly property */
|
|
50
|
-
Readonly<T extends
|
|
51
|
-
/** `[Json]` Creates
|
|
52
|
-
|
|
50
|
+
Readonly<T extends TMappedResult, F extends boolean>(schema: T, enable: F): TReadonlyFromMappedResult<T, F>;
|
|
51
|
+
/** `[Json]` Creates a Readonly property */
|
|
52
|
+
Readonly<T extends TSchema, F extends boolean>(schema: T, enable: F): TReadonlyWithFlag<T, F>;
|
|
53
|
+
/** `[Json]` Creates a Optional property */
|
|
54
|
+
Readonly<T extends TMappedResult>(schema: T): TReadonlyFromMappedResult<T, true>;
|
|
55
|
+
/** `[Json]` Creates a Readonly property */
|
|
56
|
+
Readonly<T extends TSchema>(schema: T): TReadonlyWithFlag<T, true>;
|
|
57
|
+
/** `[Json]` Creates a Optional property */
|
|
58
|
+
Optional<T extends TMappedResult, F extends boolean>(schema: T, enable: F): TOptionalFromMappedResult<T, F>;
|
|
59
|
+
/** `[Json]` Creates a Optional property */
|
|
60
|
+
Optional<T extends TSchema, F extends boolean>(schema: T, enable: F): TOptionalWithFlag<T, F>;
|
|
61
|
+
/** `[Json]` Creates a Optional property */
|
|
62
|
+
Optional<T extends TMappedResult>(schema: T): TOptionalFromMappedResult<T, true>;
|
|
63
|
+
/** `[Json]` Creates a Optional property */
|
|
64
|
+
Optional<T extends TSchema>(schema: T): TOptionalWithFlag<T, true>;
|
|
53
65
|
/** `[Json]` Creates an Any type */
|
|
54
66
|
Any(options?: SchemaOptions): TAny;
|
|
55
67
|
/** `[Json]` Creates an Array type */
|
|
@@ -145,7 +157,7 @@ export declare class JsonTypeBuilder {
|
|
|
145
157
|
/** `[Json]` Creates a String type */
|
|
146
158
|
String(options?: StringOptions): TString;
|
|
147
159
|
/** `[Json]` Creates a TemplateLiteral type from template dsl string */
|
|
148
|
-
TemplateLiteral<T extends string>(syntax: T, options?: SchemaOptions):
|
|
160
|
+
TemplateLiteral<T extends string>(syntax: T, options?: SchemaOptions): TTemplateLiteralSyntax<T>;
|
|
149
161
|
/** `[Json]` Creates a TemplateLiteral type */
|
|
150
162
|
TemplateLiteral<T extends TTemplateLiteralKind[]>(kinds: [...T], options?: SchemaOptions): TTemplateLiteral<T>;
|
|
151
163
|
/** `[Json]` Creates a Transform type */
|
|
@@ -56,12 +56,12 @@ export class JsonTypeBuilder {
|
|
|
56
56
|
return ReadonlyOptional(schema);
|
|
57
57
|
}
|
|
58
58
|
/** `[Json]` Creates a Readonly property */
|
|
59
|
-
Readonly(schema) {
|
|
60
|
-
return Readonly(schema);
|
|
59
|
+
Readonly(schema, enable) {
|
|
60
|
+
return Readonly(schema, enable ?? true);
|
|
61
61
|
}
|
|
62
|
-
/** `[Json]` Creates
|
|
63
|
-
Optional(schema) {
|
|
64
|
-
return Optional(schema);
|
|
62
|
+
/** `[Json]` Creates a Optional property */
|
|
63
|
+
Optional(schema, enable) {
|
|
64
|
+
return Optional(schema, enable ?? true);
|
|
65
65
|
}
|
|
66
66
|
// ------------------------------------------------------------------------
|
|
67
67
|
// Types
|
|
@@ -94,7 +94,7 @@ function Default(schema, references, value) {
|
|
|
94
94
|
// ------------------------------------------------------------------
|
|
95
95
|
// Cast
|
|
96
96
|
// ------------------------------------------------------------------
|
|
97
|
-
function
|
|
97
|
+
function FromArray(schema, references, value) {
|
|
98
98
|
if (Check(schema, references, value))
|
|
99
99
|
return Clone(value);
|
|
100
100
|
const created = IsArray(value) ? Clone(value) : Create(schema, references);
|
|
@@ -108,7 +108,7 @@ function TArray(schema, references, value) {
|
|
|
108
108
|
throw new ValueCastArrayUniqueItemsTypeError(schema, unique);
|
|
109
109
|
return unique;
|
|
110
110
|
}
|
|
111
|
-
function
|
|
111
|
+
function FromConstructor(schema, references, value) {
|
|
112
112
|
if (Check(schema, references, value))
|
|
113
113
|
return Create(schema, references);
|
|
114
114
|
const required = new Set(schema.returns.required || []);
|
|
@@ -120,15 +120,15 @@ function TConstructor(schema, references, value) {
|
|
|
120
120
|
}
|
|
121
121
|
return result;
|
|
122
122
|
}
|
|
123
|
-
function
|
|
123
|
+
function FromIntersect(schema, references, value) {
|
|
124
124
|
const created = Create(schema, references);
|
|
125
125
|
const mapped = IsPlainObject(created) && IsPlainObject(value) ? { ...created, ...value } : value;
|
|
126
126
|
return Check(schema, references, mapped) ? mapped : Create(schema, references);
|
|
127
127
|
}
|
|
128
|
-
function
|
|
128
|
+
function FromNever(schema, references, value) {
|
|
129
129
|
throw new ValueCastNeverTypeError(schema);
|
|
130
130
|
}
|
|
131
|
-
function
|
|
131
|
+
function FromObject(schema, references, value) {
|
|
132
132
|
if (Check(schema, references, value))
|
|
133
133
|
return value;
|
|
134
134
|
if (value === null || typeof value !== 'object')
|
|
@@ -151,7 +151,7 @@ function TObject(schema, references, value) {
|
|
|
151
151
|
}
|
|
152
152
|
return result;
|
|
153
153
|
}
|
|
154
|
-
function
|
|
154
|
+
function FromRecord(schema, references, value) {
|
|
155
155
|
if (Check(schema, references, value))
|
|
156
156
|
return Clone(value);
|
|
157
157
|
if (value === null || typeof value !== 'object' || Array.isArray(value) || value instanceof Date)
|
|
@@ -164,13 +164,13 @@ function TRecord(schema, references, value) {
|
|
|
164
164
|
}
|
|
165
165
|
return result;
|
|
166
166
|
}
|
|
167
|
-
function
|
|
167
|
+
function FromRef(schema, references, value) {
|
|
168
168
|
return Visit(Deref(schema, references), references, value);
|
|
169
169
|
}
|
|
170
|
-
function
|
|
170
|
+
function FromThis(schema, references, value) {
|
|
171
171
|
return Visit(Deref(schema, references), references, value);
|
|
172
172
|
}
|
|
173
|
-
function
|
|
173
|
+
function FromTuple(schema, references, value) {
|
|
174
174
|
if (Check(schema, references, value))
|
|
175
175
|
return Clone(value);
|
|
176
176
|
if (!IsArray(value))
|
|
@@ -179,7 +179,7 @@ function TTuple(schema, references, value) {
|
|
|
179
179
|
return [];
|
|
180
180
|
return schema.items.map((schema, index) => Visit(schema, references, value[index]));
|
|
181
181
|
}
|
|
182
|
-
function
|
|
182
|
+
function FromUnion(schema, references, value) {
|
|
183
183
|
return Check(schema, references, value) ? Clone(value) : CastUnion(schema, references, value);
|
|
184
184
|
}
|
|
185
185
|
function Visit(schema, references, value) {
|
|
@@ -190,25 +190,25 @@ function Visit(schema, references, value) {
|
|
|
190
190
|
// Structural
|
|
191
191
|
// --------------------------------------------------------------
|
|
192
192
|
case 'Array':
|
|
193
|
-
return
|
|
193
|
+
return FromArray(schema_, references_, value);
|
|
194
194
|
case 'Constructor':
|
|
195
|
-
return
|
|
195
|
+
return FromConstructor(schema_, references_, value);
|
|
196
196
|
case 'Intersect':
|
|
197
|
-
return
|
|
197
|
+
return FromIntersect(schema_, references_, value);
|
|
198
198
|
case 'Never':
|
|
199
|
-
return
|
|
199
|
+
return FromNever(schema_, references_, value);
|
|
200
200
|
case 'Object':
|
|
201
|
-
return
|
|
201
|
+
return FromObject(schema_, references_, value);
|
|
202
202
|
case 'Record':
|
|
203
|
-
return
|
|
203
|
+
return FromRecord(schema_, references_, value);
|
|
204
204
|
case 'Ref':
|
|
205
|
-
return
|
|
205
|
+
return FromRef(schema_, references_, value);
|
|
206
206
|
case 'This':
|
|
207
|
-
return
|
|
207
|
+
return FromThis(schema_, references_, value);
|
|
208
208
|
case 'Tuple':
|
|
209
|
-
return
|
|
209
|
+
return FromTuple(schema_, references_, value);
|
|
210
210
|
case 'Union':
|
|
211
|
-
return
|
|
211
|
+
return FromUnion(schema_, references_, value);
|
|
212
212
|
// --------------------------------------------------------------
|
|
213
213
|
// DefaultClone
|
|
214
214
|
// --------------------------------------------------------------
|
|
@@ -40,10 +40,10 @@ function IsDefined(value) {
|
|
|
40
40
|
// ------------------------------------------------------------------
|
|
41
41
|
// Types
|
|
42
42
|
// ------------------------------------------------------------------
|
|
43
|
-
function
|
|
43
|
+
function FromAny(schema, references, value) {
|
|
44
44
|
return true;
|
|
45
45
|
}
|
|
46
|
-
function
|
|
46
|
+
function FromArray(schema, references, value) {
|
|
47
47
|
if (!IsArray(value))
|
|
48
48
|
return false;
|
|
49
49
|
if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) {
|
|
@@ -84,10 +84,10 @@ function TArray(schema, references, value) {
|
|
|
84
84
|
}
|
|
85
85
|
return true;
|
|
86
86
|
}
|
|
87
|
-
function
|
|
87
|
+
function FromAsyncIterator(schema, references, value) {
|
|
88
88
|
return IsAsyncIterator(value);
|
|
89
89
|
}
|
|
90
|
-
function
|
|
90
|
+
function FromBigInt(schema, references, value) {
|
|
91
91
|
if (!IsBigInt(value))
|
|
92
92
|
return false;
|
|
93
93
|
if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {
|
|
@@ -107,13 +107,13 @@ function TBigInt(schema, references, value) {
|
|
|
107
107
|
}
|
|
108
108
|
return true;
|
|
109
109
|
}
|
|
110
|
-
function
|
|
110
|
+
function FromBoolean(schema, references, value) {
|
|
111
111
|
return IsBoolean(value);
|
|
112
112
|
}
|
|
113
|
-
function
|
|
113
|
+
function FromConstructor(schema, references, value) {
|
|
114
114
|
return Visit(schema.returns, references, value.prototype);
|
|
115
115
|
}
|
|
116
|
-
function
|
|
116
|
+
function FromDate(schema, references, value) {
|
|
117
117
|
if (!IsDate(value))
|
|
118
118
|
return false;
|
|
119
119
|
if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) {
|
|
@@ -133,10 +133,10 @@ function TDate(schema, references, value) {
|
|
|
133
133
|
}
|
|
134
134
|
return true;
|
|
135
135
|
}
|
|
136
|
-
function
|
|
136
|
+
function FromFunction(schema, references, value) {
|
|
137
137
|
return IsFunction(value);
|
|
138
138
|
}
|
|
139
|
-
function
|
|
139
|
+
function FromInteger(schema, references, value) {
|
|
140
140
|
if (!IsInteger(value)) {
|
|
141
141
|
return false;
|
|
142
142
|
}
|
|
@@ -157,7 +157,7 @@ function TInteger(schema, references, value) {
|
|
|
157
157
|
}
|
|
158
158
|
return true;
|
|
159
159
|
}
|
|
160
|
-
function
|
|
160
|
+
function FromIntersect(schema, references, value) {
|
|
161
161
|
const check1 = schema.allOf.every((schema) => Visit(schema, references, value));
|
|
162
162
|
if (schema.unevaluatedProperties === false) {
|
|
163
163
|
const keyPattern = new RegExp(KeyOfPattern(schema));
|
|
@@ -173,22 +173,22 @@ function TIntersect(schema, references, value) {
|
|
|
173
173
|
return check1;
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
|
-
function
|
|
176
|
+
function FromIterator(schema, references, value) {
|
|
177
177
|
return IsIterator(value);
|
|
178
178
|
}
|
|
179
|
-
function
|
|
179
|
+
function FromLiteral(schema, references, value) {
|
|
180
180
|
return value === schema.const;
|
|
181
181
|
}
|
|
182
|
-
function
|
|
182
|
+
function FromNever(schema, references, value) {
|
|
183
183
|
return false;
|
|
184
184
|
}
|
|
185
|
-
function
|
|
185
|
+
function FromNot(schema, references, value) {
|
|
186
186
|
return !Visit(schema.not, references, value);
|
|
187
187
|
}
|
|
188
|
-
function
|
|
188
|
+
function FromNull(schema, references, value) {
|
|
189
189
|
return IsNull(value);
|
|
190
190
|
}
|
|
191
|
-
function
|
|
191
|
+
function FromNumber(schema, references, value) {
|
|
192
192
|
if (!TypeSystemPolicy.IsNumberLike(value))
|
|
193
193
|
return false;
|
|
194
194
|
if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {
|
|
@@ -208,7 +208,7 @@ function TNumber(schema, references, value) {
|
|
|
208
208
|
}
|
|
209
209
|
return true;
|
|
210
210
|
}
|
|
211
|
-
function
|
|
211
|
+
function FromObject(schema, references, value) {
|
|
212
212
|
if (!TypeSystemPolicy.IsObjectLike(value))
|
|
213
213
|
return false;
|
|
214
214
|
if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {
|
|
@@ -252,10 +252,10 @@ function TObject(schema, references, value) {
|
|
|
252
252
|
return true;
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
|
-
function
|
|
255
|
+
function FromPromise(schema, references, value) {
|
|
256
256
|
return IsPromise(value);
|
|
257
257
|
}
|
|
258
|
-
function
|
|
258
|
+
function FromRecord(schema, references, value) {
|
|
259
259
|
if (!TypeSystemPolicy.IsRecordLike(value)) {
|
|
260
260
|
return false;
|
|
261
261
|
}
|
|
@@ -282,10 +282,10 @@ function TRecord(schema, references, value) {
|
|
|
282
282
|
: true;
|
|
283
283
|
return check1 && check2 && check3;
|
|
284
284
|
}
|
|
285
|
-
function
|
|
285
|
+
function FromRef(schema, references, value) {
|
|
286
286
|
return Visit(Deref(schema, references), references, value);
|
|
287
287
|
}
|
|
288
|
-
function
|
|
288
|
+
function FromString(schema, references, value) {
|
|
289
289
|
if (!IsString(value)) {
|
|
290
290
|
return false;
|
|
291
291
|
}
|
|
@@ -310,16 +310,16 @@ function TString(schema, references, value) {
|
|
|
310
310
|
}
|
|
311
311
|
return true;
|
|
312
312
|
}
|
|
313
|
-
function
|
|
313
|
+
function FromSymbol(schema, references, value) {
|
|
314
314
|
return IsSymbol(value);
|
|
315
315
|
}
|
|
316
|
-
function
|
|
316
|
+
function FromTemplateLiteral(schema, references, value) {
|
|
317
317
|
return IsString(value) && new RegExp(schema.pattern).test(value);
|
|
318
318
|
}
|
|
319
|
-
function
|
|
319
|
+
function FromThis(schema, references, value) {
|
|
320
320
|
return Visit(Deref(schema, references), references, value);
|
|
321
321
|
}
|
|
322
|
-
function
|
|
322
|
+
function FromTuple(schema, references, value) {
|
|
323
323
|
if (!IsArray(value)) {
|
|
324
324
|
return false;
|
|
325
325
|
}
|
|
@@ -338,13 +338,13 @@ function TTuple(schema, references, value) {
|
|
|
338
338
|
}
|
|
339
339
|
return true;
|
|
340
340
|
}
|
|
341
|
-
function
|
|
341
|
+
function FromUndefined(schema, references, value) {
|
|
342
342
|
return IsUndefined(value);
|
|
343
343
|
}
|
|
344
|
-
function
|
|
344
|
+
function FromUnion(schema, references, value) {
|
|
345
345
|
return schema.anyOf.some((inner) => Visit(inner, references, value));
|
|
346
346
|
}
|
|
347
|
-
function
|
|
347
|
+
function FromUint8Array(schema, references, value) {
|
|
348
348
|
if (!IsUint8Array(value)) {
|
|
349
349
|
return false;
|
|
350
350
|
}
|
|
@@ -356,13 +356,13 @@ function TUint8Array(schema, references, value) {
|
|
|
356
356
|
}
|
|
357
357
|
return true;
|
|
358
358
|
}
|
|
359
|
-
function
|
|
359
|
+
function FromUnknown(schema, references, value) {
|
|
360
360
|
return true;
|
|
361
361
|
}
|
|
362
|
-
function
|
|
362
|
+
function FromVoid(schema, references, value) {
|
|
363
363
|
return TypeSystemPolicy.IsVoidLike(value);
|
|
364
364
|
}
|
|
365
|
-
function
|
|
365
|
+
function FromKind(schema, references, value) {
|
|
366
366
|
if (!TypeRegistry.Has(schema[Kind]))
|
|
367
367
|
return false;
|
|
368
368
|
const func = TypeRegistry.Get(schema[Kind]);
|
|
@@ -373,69 +373,69 @@ function Visit(schema, references, value) {
|
|
|
373
373
|
const schema_ = schema;
|
|
374
374
|
switch (schema_[Kind]) {
|
|
375
375
|
case 'Any':
|
|
376
|
-
return
|
|
376
|
+
return FromAny(schema_, references_, value);
|
|
377
377
|
case 'Array':
|
|
378
|
-
return
|
|
378
|
+
return FromArray(schema_, references_, value);
|
|
379
379
|
case 'AsyncIterator':
|
|
380
|
-
return
|
|
380
|
+
return FromAsyncIterator(schema_, references_, value);
|
|
381
381
|
case 'BigInt':
|
|
382
|
-
return
|
|
382
|
+
return FromBigInt(schema_, references_, value);
|
|
383
383
|
case 'Boolean':
|
|
384
|
-
return
|
|
384
|
+
return FromBoolean(schema_, references_, value);
|
|
385
385
|
case 'Constructor':
|
|
386
|
-
return
|
|
386
|
+
return FromConstructor(schema_, references_, value);
|
|
387
387
|
case 'Date':
|
|
388
|
-
return
|
|
388
|
+
return FromDate(schema_, references_, value);
|
|
389
389
|
case 'Function':
|
|
390
|
-
return
|
|
390
|
+
return FromFunction(schema_, references_, value);
|
|
391
391
|
case 'Integer':
|
|
392
|
-
return
|
|
392
|
+
return FromInteger(schema_, references_, value);
|
|
393
393
|
case 'Intersect':
|
|
394
|
-
return
|
|
394
|
+
return FromIntersect(schema_, references_, value);
|
|
395
395
|
case 'Iterator':
|
|
396
|
-
return
|
|
396
|
+
return FromIterator(schema_, references_, value);
|
|
397
397
|
case 'Literal':
|
|
398
|
-
return
|
|
398
|
+
return FromLiteral(schema_, references_, value);
|
|
399
399
|
case 'Never':
|
|
400
|
-
return
|
|
400
|
+
return FromNever(schema_, references_, value);
|
|
401
401
|
case 'Not':
|
|
402
|
-
return
|
|
402
|
+
return FromNot(schema_, references_, value);
|
|
403
403
|
case 'Null':
|
|
404
|
-
return
|
|
404
|
+
return FromNull(schema_, references_, value);
|
|
405
405
|
case 'Number':
|
|
406
|
-
return
|
|
406
|
+
return FromNumber(schema_, references_, value);
|
|
407
407
|
case 'Object':
|
|
408
|
-
return
|
|
408
|
+
return FromObject(schema_, references_, value);
|
|
409
409
|
case 'Promise':
|
|
410
|
-
return
|
|
410
|
+
return FromPromise(schema_, references_, value);
|
|
411
411
|
case 'Record':
|
|
412
|
-
return
|
|
412
|
+
return FromRecord(schema_, references_, value);
|
|
413
413
|
case 'Ref':
|
|
414
|
-
return
|
|
414
|
+
return FromRef(schema_, references_, value);
|
|
415
415
|
case 'String':
|
|
416
|
-
return
|
|
416
|
+
return FromString(schema_, references_, value);
|
|
417
417
|
case 'Symbol':
|
|
418
|
-
return
|
|
418
|
+
return FromSymbol(schema_, references_, value);
|
|
419
419
|
case 'TemplateLiteral':
|
|
420
|
-
return
|
|
420
|
+
return FromTemplateLiteral(schema_, references_, value);
|
|
421
421
|
case 'This':
|
|
422
|
-
return
|
|
422
|
+
return FromThis(schema_, references_, value);
|
|
423
423
|
case 'Tuple':
|
|
424
|
-
return
|
|
424
|
+
return FromTuple(schema_, references_, value);
|
|
425
425
|
case 'Undefined':
|
|
426
|
-
return
|
|
426
|
+
return FromUndefined(schema_, references_, value);
|
|
427
427
|
case 'Union':
|
|
428
|
-
return
|
|
428
|
+
return FromUnion(schema_, references_, value);
|
|
429
429
|
case 'Uint8Array':
|
|
430
|
-
return
|
|
430
|
+
return FromUint8Array(schema_, references_, value);
|
|
431
431
|
case 'Unknown':
|
|
432
|
-
return
|
|
432
|
+
return FromUnknown(schema_, references_, value);
|
|
433
433
|
case 'Void':
|
|
434
|
-
return
|
|
434
|
+
return FromVoid(schema_, references_, value);
|
|
435
435
|
default:
|
|
436
436
|
if (!TypeRegistry.Has(schema_[Kind]))
|
|
437
437
|
throw new ValueCheckUnknownTypeError(schema_);
|
|
438
|
-
return
|
|
438
|
+
return FromKind(schema_, references_, value);
|
|
439
439
|
}
|
|
440
440
|
}
|
|
441
441
|
/** Returns true if the value matches the given type. */
|
|
@@ -22,12 +22,12 @@ function IsCheckable(schema) {
|
|
|
22
22
|
// ------------------------------------------------------------------
|
|
23
23
|
// Types
|
|
24
24
|
// ------------------------------------------------------------------
|
|
25
|
-
function
|
|
25
|
+
function FromArray(schema, references, value) {
|
|
26
26
|
if (!IsArray(value))
|
|
27
27
|
return value;
|
|
28
28
|
return value.map((value) => Visit(schema.items, references, value));
|
|
29
29
|
}
|
|
30
|
-
function
|
|
30
|
+
function FromIntersect(schema, references, value) {
|
|
31
31
|
const unevaluatedProperties = schema.unevaluatedProperties;
|
|
32
32
|
const intersections = schema.allOf.map((schema) => Visit(schema, references, Clone(value)));
|
|
33
33
|
const composite = intersections.reduce((acc, value) => (IsObject(value) ? { ...acc, ...value } : value), {});
|
|
@@ -43,7 +43,7 @@ function TIntersect(schema, references, value) {
|
|
|
43
43
|
}
|
|
44
44
|
return composite;
|
|
45
45
|
}
|
|
46
|
-
function
|
|
46
|
+
function FromObject(schema, references, value) {
|
|
47
47
|
if (!IsObject(value) || IsArray(value))
|
|
48
48
|
return value; // Check IsArray for AllowArrayObject configuration
|
|
49
49
|
const additionalProperties = schema.additionalProperties;
|
|
@@ -60,7 +60,7 @@ function TObject(schema, references, value) {
|
|
|
60
60
|
}
|
|
61
61
|
return value;
|
|
62
62
|
}
|
|
63
|
-
function
|
|
63
|
+
function FromRecord(schema, references, value) {
|
|
64
64
|
if (!IsObject(value))
|
|
65
65
|
return value;
|
|
66
66
|
const additionalProperties = schema.additionalProperties;
|
|
@@ -80,13 +80,13 @@ function TRecord(schema, references, value) {
|
|
|
80
80
|
}
|
|
81
81
|
return value;
|
|
82
82
|
}
|
|
83
|
-
function
|
|
83
|
+
function FromRef(schema, references, value) {
|
|
84
84
|
return Visit(Deref(schema, references), references, value);
|
|
85
85
|
}
|
|
86
|
-
function
|
|
86
|
+
function FromThis(schema, references, value) {
|
|
87
87
|
return Visit(Deref(schema, references), references, value);
|
|
88
88
|
}
|
|
89
|
-
function
|
|
89
|
+
function FromTuple(schema, references, value) {
|
|
90
90
|
if (!IsArray(value))
|
|
91
91
|
return value;
|
|
92
92
|
if (IsUndefined(schema.items))
|
|
@@ -100,7 +100,7 @@ function TTuple(schema, references, value) {
|
|
|
100
100
|
? value.slice(0, length)
|
|
101
101
|
: value;
|
|
102
102
|
}
|
|
103
|
-
function
|
|
103
|
+
function FromUnion(schema, references, value) {
|
|
104
104
|
for (const inner of schema.anyOf) {
|
|
105
105
|
if (IsCheckable(inner) && Check(inner, value)) {
|
|
106
106
|
return Visit(inner, references, value);
|
|
@@ -113,21 +113,21 @@ function Visit(schema, references, value) {
|
|
|
113
113
|
const schema_ = schema;
|
|
114
114
|
switch (schema_[Kind]) {
|
|
115
115
|
case 'Array':
|
|
116
|
-
return
|
|
116
|
+
return FromArray(schema_, references_, value);
|
|
117
117
|
case 'Intersect':
|
|
118
|
-
return
|
|
118
|
+
return FromIntersect(schema_, references_, value);
|
|
119
119
|
case 'Object':
|
|
120
|
-
return
|
|
120
|
+
return FromObject(schema_, references_, value);
|
|
121
121
|
case 'Record':
|
|
122
|
-
return
|
|
122
|
+
return FromRecord(schema_, references_, value);
|
|
123
123
|
case 'Ref':
|
|
124
|
-
return
|
|
124
|
+
return FromRef(schema_, references_, value);
|
|
125
125
|
case 'This':
|
|
126
|
-
return
|
|
126
|
+
return FromThis(schema_, references_, value);
|
|
127
127
|
case 'Tuple':
|
|
128
|
-
return
|
|
128
|
+
return FromTuple(schema_, references_, value);
|
|
129
129
|
case 'Union':
|
|
130
|
-
return
|
|
130
|
+
return FromUnion(schema_, references_, value);
|
|
131
131
|
default:
|
|
132
132
|
return value;
|
|
133
133
|
}
|