@sinclair/typebox 0.30.3 → 0.31.0-dev-1
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/compiler/compiler.d.ts +22 -14
- package/compiler/compiler.js +135 -107
- package/compiler/index.d.ts +1 -1
- package/compiler/index.js +2 -1
- package/errors/errors.d.ts +56 -61
- package/errors/errors.js +222 -279
- package/package.json +5 -3
- package/readme.md +592 -511
- package/system/system.d.ts +34 -8
- package/system/system.js +214 -11
- package/typebox.d.ts +180 -106
- package/typebox.js +794 -907
- package/value/cast.d.ts +6 -12
- package/value/cast.js +81 -163
- package/value/check.d.ts +1 -5
- package/value/check.js +59 -103
- package/value/clone.js +6 -29
- package/value/convert.d.ts +2 -5
- package/value/convert.js +55 -106
- package/value/create.d.ts +6 -10
- package/value/create.js +54 -68
- package/value/delta.js +22 -22
- package/value/deref.d.ts +7 -0
- package/value/deref.js +46 -0
- package/value/equal.js +10 -10
- package/value/guard.js +1 -1
- package/value/hash.js +14 -14
- package/value/mutate.js +17 -17
- package/value/pointer.js +2 -2
- package/value/transform.d.ts +42 -0
- package/value/transform.js +512 -0
- package/value/value.d.ts +8 -0
- package/value/value.js +18 -0
package/value/cast.d.ts
CHANGED
|
@@ -1,29 +1,23 @@
|
|
|
1
1
|
import * as Types from '../typebox';
|
|
2
|
-
export declare class
|
|
3
|
-
readonly schema: Types.TRef | Types.TThis;
|
|
4
|
-
constructor(schema: Types.TRef | Types.TThis);
|
|
5
|
-
}
|
|
6
|
-
export declare class ValueCastArrayUniqueItemsTypeError extends Error {
|
|
2
|
+
export declare class ValueCastArrayUniqueItemsTypeError extends Types.TypeBoxError {
|
|
7
3
|
readonly schema: Types.TSchema;
|
|
8
4
|
readonly value: unknown;
|
|
9
5
|
constructor(schema: Types.TSchema, value: unknown);
|
|
10
6
|
}
|
|
11
|
-
export declare class ValueCastNeverTypeError extends
|
|
7
|
+
export declare class ValueCastNeverTypeError extends Types.TypeBoxError {
|
|
12
8
|
readonly schema: Types.TSchema;
|
|
13
9
|
constructor(schema: Types.TSchema);
|
|
14
10
|
}
|
|
15
|
-
export declare class ValueCastRecursiveTypeError extends
|
|
11
|
+
export declare class ValueCastRecursiveTypeError extends Types.TypeBoxError {
|
|
16
12
|
readonly schema: Types.TSchema;
|
|
17
13
|
constructor(schema: Types.TSchema);
|
|
18
14
|
}
|
|
19
|
-
export declare class ValueCastUnknownTypeError extends
|
|
15
|
+
export declare class ValueCastUnknownTypeError extends Types.TypeBoxError {
|
|
20
16
|
readonly schema: Types.TSchema;
|
|
21
17
|
constructor(schema: Types.TSchema);
|
|
22
18
|
}
|
|
23
|
-
export declare
|
|
24
|
-
|
|
25
|
-
constructor(schema: Types.TRef | Types.TThis);
|
|
26
|
-
}
|
|
19
|
+
export declare function DefaultClone(schema: Types.TSchema, references: Types.TSchema[], value: any): any;
|
|
20
|
+
export declare function Default(schema: Types.TSchema, references: Types.TSchema[], value: any): any;
|
|
27
21
|
/** Casts a value into a given type and references. The return value will retain as much information of the original value as possible. */
|
|
28
22
|
export declare function Cast<T extends Types.TSchema>(schema: T, references: Types.TSchema[], value: unknown): Types.Static<T>;
|
|
29
23
|
/** Casts a value into a given type. The return value will retain as much information of the original value as possible. */
|
package/value/cast.js
CHANGED
|
@@ -27,58 +27,45 @@ THE SOFTWARE.
|
|
|
27
27
|
|
|
28
28
|
---------------------------------------------------------------------------*/
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.Cast = exports.
|
|
30
|
+
exports.Cast = exports.Default = exports.DefaultClone = exports.ValueCastUnknownTypeError = exports.ValueCastRecursiveTypeError = exports.ValueCastNeverTypeError = exports.ValueCastArrayUniqueItemsTypeError = void 0;
|
|
31
|
+
const guard_1 = require("./guard");
|
|
32
|
+
const create_1 = require("./create");
|
|
33
|
+
const check_1 = require("./check");
|
|
34
|
+
const clone_1 = require("./clone");
|
|
35
|
+
const deref_1 = require("./deref");
|
|
31
36
|
const Types = require("../typebox");
|
|
32
|
-
const ValueCreate = require("./create");
|
|
33
|
-
const ValueCheck = require("./check");
|
|
34
|
-
const ValueClone = require("./clone");
|
|
35
|
-
const ValueGuard = require("./guard");
|
|
36
37
|
// --------------------------------------------------------------------------
|
|
37
38
|
// Errors
|
|
38
39
|
// --------------------------------------------------------------------------
|
|
39
|
-
class
|
|
40
|
-
constructor(schema) {
|
|
41
|
-
super(`ValueCast: Cannot locate referenced schema with $id '${schema.$ref}'`);
|
|
42
|
-
this.schema = schema;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
exports.ValueCastReferenceTypeError = ValueCastReferenceTypeError;
|
|
46
|
-
class ValueCastArrayUniqueItemsTypeError extends Error {
|
|
40
|
+
class ValueCastArrayUniqueItemsTypeError extends Types.TypeBoxError {
|
|
47
41
|
constructor(schema, value) {
|
|
48
|
-
super('
|
|
42
|
+
super('Array cast produced invalid data due to uniqueItems constraint');
|
|
49
43
|
this.schema = schema;
|
|
50
44
|
this.value = value;
|
|
51
45
|
}
|
|
52
46
|
}
|
|
53
47
|
exports.ValueCastArrayUniqueItemsTypeError = ValueCastArrayUniqueItemsTypeError;
|
|
54
|
-
class ValueCastNeverTypeError extends
|
|
48
|
+
class ValueCastNeverTypeError extends Types.TypeBoxError {
|
|
55
49
|
constructor(schema) {
|
|
56
|
-
super('
|
|
50
|
+
super('Never types cannot be cast');
|
|
57
51
|
this.schema = schema;
|
|
58
52
|
}
|
|
59
53
|
}
|
|
60
54
|
exports.ValueCastNeverTypeError = ValueCastNeverTypeError;
|
|
61
|
-
class ValueCastRecursiveTypeError extends
|
|
55
|
+
class ValueCastRecursiveTypeError extends Types.TypeBoxError {
|
|
62
56
|
constructor(schema) {
|
|
63
|
-
super('
|
|
57
|
+
super('Cannot cast recursive schemas');
|
|
64
58
|
this.schema = schema;
|
|
65
59
|
}
|
|
66
60
|
}
|
|
67
61
|
exports.ValueCastRecursiveTypeError = ValueCastRecursiveTypeError;
|
|
68
|
-
class ValueCastUnknownTypeError extends
|
|
62
|
+
class ValueCastUnknownTypeError extends Types.TypeBoxError {
|
|
69
63
|
constructor(schema) {
|
|
70
|
-
super('
|
|
64
|
+
super('Unknown type');
|
|
71
65
|
this.schema = schema;
|
|
72
66
|
}
|
|
73
67
|
}
|
|
74
68
|
exports.ValueCastUnknownTypeError = ValueCastUnknownTypeError;
|
|
75
|
-
class ValueCastDereferenceError extends Error {
|
|
76
|
-
constructor(schema) {
|
|
77
|
-
super(`ValueCast: Unable to dereference type with $id '${schema.$ref}'`);
|
|
78
|
-
this.schema = schema;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
exports.ValueCastDereferenceError = ValueCastDereferenceError;
|
|
82
69
|
// --------------------------------------------------------------------------
|
|
83
70
|
// The following will score a schema against a value. For objects, the score
|
|
84
71
|
// is the tally of points awarded for each property of the value. Property
|
|
@@ -89,20 +76,20 @@ exports.ValueCastDereferenceError = ValueCastDereferenceError;
|
|
|
89
76
|
var UnionCastCreate;
|
|
90
77
|
(function (UnionCastCreate) {
|
|
91
78
|
function Score(schema, references, value) {
|
|
92
|
-
if (schema[Types.Kind] === 'Object' && typeof value === 'object' && !
|
|
79
|
+
if (schema[Types.Kind] === 'Object' && typeof value === 'object' && !(0, guard_1.IsNull)(value)) {
|
|
93
80
|
const object = schema;
|
|
94
81
|
const keys = Object.getOwnPropertyNames(value);
|
|
95
82
|
const entries = Object.entries(object.properties);
|
|
96
83
|
const [point, max] = [1 / entries.length, entries.length];
|
|
97
84
|
return entries.reduce((acc, [key, schema]) => {
|
|
98
85
|
const literal = schema[Types.Kind] === 'Literal' && schema.const === value[key] ? max : 0;
|
|
99
|
-
const checks =
|
|
86
|
+
const checks = (0, check_1.Check)(schema, references, value[key]) ? point : 0;
|
|
100
87
|
const exists = keys.includes(key) ? point : 0;
|
|
101
88
|
return acc + (literal + checks + exists);
|
|
102
89
|
}, 0);
|
|
103
90
|
}
|
|
104
91
|
else {
|
|
105
|
-
return
|
|
92
|
+
return (0, check_1.Check)(schema, references, value) ? 1 : 0;
|
|
106
93
|
}
|
|
107
94
|
}
|
|
108
95
|
function Select(union, references, value) {
|
|
@@ -128,37 +115,36 @@ var UnionCastCreate;
|
|
|
128
115
|
UnionCastCreate.Create = Create;
|
|
129
116
|
})(UnionCastCreate || (UnionCastCreate = {}));
|
|
130
117
|
// --------------------------------------------------------------------------
|
|
131
|
-
//
|
|
118
|
+
// Default
|
|
132
119
|
// --------------------------------------------------------------------------
|
|
133
|
-
function
|
|
134
|
-
return
|
|
120
|
+
function DefaultClone(schema, references, value) {
|
|
121
|
+
return (0, check_1.Check)(schema, references, value) ? (0, clone_1.Clone)(value) : (0, create_1.Create)(schema, references);
|
|
135
122
|
}
|
|
123
|
+
exports.DefaultClone = DefaultClone;
|
|
124
|
+
function Default(schema, references, value) {
|
|
125
|
+
return (0, check_1.Check)(schema, references, value) ? value : (0, create_1.Create)(schema, references);
|
|
126
|
+
}
|
|
127
|
+
exports.Default = Default;
|
|
128
|
+
// --------------------------------------------------------------------------
|
|
129
|
+
// Cast
|
|
130
|
+
// --------------------------------------------------------------------------
|
|
136
131
|
function TArray(schema, references, value) {
|
|
137
|
-
if (
|
|
138
|
-
return
|
|
139
|
-
const created =
|
|
140
|
-
const minimum =
|
|
141
|
-
const maximum =
|
|
132
|
+
if ((0, check_1.Check)(schema, references, value))
|
|
133
|
+
return (0, clone_1.Clone)(value);
|
|
134
|
+
const created = (0, guard_1.IsArray)(value) ? (0, clone_1.Clone)(value) : (0, create_1.Create)(schema, references);
|
|
135
|
+
const minimum = (0, guard_1.IsNumber)(schema.minItems) && created.length < schema.minItems ? [...created, ...Array.from({ length: schema.minItems - created.length }, () => null)] : created;
|
|
136
|
+
const maximum = (0, guard_1.IsNumber)(schema.maxItems) && minimum.length > schema.maxItems ? minimum.slice(0, schema.maxItems) : minimum;
|
|
142
137
|
const casted = maximum.map((value) => Visit(schema.items, references, value));
|
|
143
138
|
if (schema.uniqueItems !== true)
|
|
144
139
|
return casted;
|
|
145
140
|
const unique = [...new Set(casted)];
|
|
146
|
-
if (!
|
|
141
|
+
if (!(0, check_1.Check)(schema, references, unique))
|
|
147
142
|
throw new ValueCastArrayUniqueItemsTypeError(schema, unique);
|
|
148
143
|
return unique;
|
|
149
144
|
}
|
|
150
|
-
function TAsyncIterator(schema, references, value) {
|
|
151
|
-
return ValueCheck.Check(schema, references, value) ? value : ValueCreate.Create(schema, references);
|
|
152
|
-
}
|
|
153
|
-
function TBigInt(schema, references, value) {
|
|
154
|
-
return ValueCheck.Check(schema, references, value) ? value : ValueCreate.Create(schema, references);
|
|
155
|
-
}
|
|
156
|
-
function TBoolean(schema, references, value) {
|
|
157
|
-
return ValueCheck.Check(schema, references, value) ? value : ValueCreate.Create(schema, references);
|
|
158
|
-
}
|
|
159
145
|
function TConstructor(schema, references, value) {
|
|
160
|
-
if (
|
|
161
|
-
return
|
|
146
|
+
if ((0, check_1.Check)(schema, references, value))
|
|
147
|
+
return (0, create_1.Create)(schema, references);
|
|
162
148
|
const required = new Set(schema.returns.required || []);
|
|
163
149
|
const result = function () { };
|
|
164
150
|
for (const [key, property] of Object.entries(schema.returns.properties)) {
|
|
@@ -168,43 +154,19 @@ function TConstructor(schema, references, value) {
|
|
|
168
154
|
}
|
|
169
155
|
return result;
|
|
170
156
|
}
|
|
171
|
-
function TDate(schema, references, value) {
|
|
172
|
-
return ValueCheck.Check(schema, references, value) ? ValueClone.Clone(value) : ValueCreate.Create(schema, references);
|
|
173
|
-
}
|
|
174
|
-
function TFunction(schema, references, value) {
|
|
175
|
-
return ValueCheck.Check(schema, references, value) ? value : ValueCreate.Create(schema, references);
|
|
176
|
-
}
|
|
177
|
-
function TInteger(schema, references, value) {
|
|
178
|
-
return ValueCheck.Check(schema, references, value) ? value : ValueCreate.Create(schema, references);
|
|
179
|
-
}
|
|
180
157
|
function TIntersect(schema, references, value) {
|
|
181
|
-
const created =
|
|
182
|
-
const mapped =
|
|
183
|
-
return
|
|
184
|
-
}
|
|
185
|
-
function TIterator(schema, references, value) {
|
|
186
|
-
return ValueCheck.Check(schema, references, value) ? value : ValueCreate.Create(schema, references);
|
|
187
|
-
}
|
|
188
|
-
function TLiteral(schema, references, value) {
|
|
189
|
-
return ValueCheck.Check(schema, references, value) ? value : ValueCreate.Create(schema, references);
|
|
158
|
+
const created = (0, create_1.Create)(schema, references);
|
|
159
|
+
const mapped = (0, guard_1.IsPlainObject)(created) && (0, guard_1.IsPlainObject)(value) ? { ...created, ...value } : value;
|
|
160
|
+
return (0, check_1.Check)(schema, references, mapped) ? mapped : (0, create_1.Create)(schema, references);
|
|
190
161
|
}
|
|
191
162
|
function TNever(schema, references, value) {
|
|
192
163
|
throw new ValueCastNeverTypeError(schema);
|
|
193
164
|
}
|
|
194
|
-
function TNot(schema, references, value) {
|
|
195
|
-
return ValueCheck.Check(schema, references, value) ? value : ValueCreate.Create(schema, references);
|
|
196
|
-
}
|
|
197
|
-
function TNull(schema, references, value) {
|
|
198
|
-
return ValueCheck.Check(schema, references, value) ? value : ValueCreate.Create(schema, references);
|
|
199
|
-
}
|
|
200
|
-
function TNumber(schema, references, value) {
|
|
201
|
-
return ValueCheck.Check(schema, references, value) ? value : ValueCreate.Create(schema, references);
|
|
202
|
-
}
|
|
203
165
|
function TObject(schema, references, value) {
|
|
204
|
-
if (
|
|
166
|
+
if ((0, check_1.Check)(schema, references, value))
|
|
205
167
|
return value;
|
|
206
168
|
if (value === null || typeof value !== 'object')
|
|
207
|
-
return
|
|
169
|
+
return (0, create_1.Create)(schema, references);
|
|
208
170
|
const required = new Set(schema.required || []);
|
|
209
171
|
const result = {};
|
|
210
172
|
for (const [key, property] of Object.entries(schema.properties)) {
|
|
@@ -223,14 +185,11 @@ function TObject(schema, references, value) {
|
|
|
223
185
|
}
|
|
224
186
|
return result;
|
|
225
187
|
}
|
|
226
|
-
function TPromise(schema, references, value) {
|
|
227
|
-
return ValueCheck.Check(schema, references, value) ? value : ValueCreate.Create(schema, references);
|
|
228
|
-
}
|
|
229
188
|
function TRecord(schema, references, value) {
|
|
230
|
-
if (
|
|
231
|
-
return
|
|
189
|
+
if ((0, check_1.Check)(schema, references, value))
|
|
190
|
+
return (0, clone_1.Clone)(value);
|
|
232
191
|
if (value === null || typeof value !== 'object' || Array.isArray(value) || value instanceof Date)
|
|
233
|
-
return
|
|
192
|
+
return (0, create_1.Create)(schema, references);
|
|
234
193
|
const subschemaPropertyName = Object.getOwnPropertyNames(schema.patternProperties)[0];
|
|
235
194
|
const subschema = schema.patternProperties[subschemaPropertyName];
|
|
236
195
|
const result = {};
|
|
@@ -240,123 +199,82 @@ function TRecord(schema, references, value) {
|
|
|
240
199
|
return result;
|
|
241
200
|
}
|
|
242
201
|
function TRef(schema, references, value) {
|
|
243
|
-
|
|
244
|
-
if (index === -1)
|
|
245
|
-
throw new ValueCastDereferenceError(schema);
|
|
246
|
-
const target = references[index];
|
|
247
|
-
return Visit(target, references, value);
|
|
248
|
-
}
|
|
249
|
-
function TString(schema, references, value) {
|
|
250
|
-
return ValueCheck.Check(schema, references, value) ? value : ValueCreate.Create(schema, references);
|
|
251
|
-
}
|
|
252
|
-
function TSymbol(schema, references, value) {
|
|
253
|
-
return ValueCheck.Check(schema, references, value) ? ValueClone.Clone(value) : ValueCreate.Create(schema, references);
|
|
254
|
-
}
|
|
255
|
-
function TTemplateLiteral(schema, references, value) {
|
|
256
|
-
return ValueCheck.Check(schema, references, value) ? ValueClone.Clone(value) : ValueCreate.Create(schema, references);
|
|
202
|
+
return Visit((0, deref_1.Deref)(schema, references), references, value);
|
|
257
203
|
}
|
|
258
204
|
function TThis(schema, references, value) {
|
|
259
|
-
|
|
260
|
-
if (index === -1)
|
|
261
|
-
throw new ValueCastDereferenceError(schema);
|
|
262
|
-
const target = references[index];
|
|
263
|
-
return Visit(target, references, value);
|
|
205
|
+
return Visit((0, deref_1.Deref)(schema, references), references, value);
|
|
264
206
|
}
|
|
265
207
|
function TTuple(schema, references, value) {
|
|
266
|
-
if (
|
|
267
|
-
return
|
|
268
|
-
if (!
|
|
269
|
-
return
|
|
208
|
+
if ((0, check_1.Check)(schema, references, value))
|
|
209
|
+
return (0, clone_1.Clone)(value);
|
|
210
|
+
if (!(0, guard_1.IsArray)(value))
|
|
211
|
+
return (0, create_1.Create)(schema, references);
|
|
270
212
|
if (schema.items === undefined)
|
|
271
213
|
return [];
|
|
272
214
|
return schema.items.map((schema, index) => Visit(schema, references, value[index]));
|
|
273
215
|
}
|
|
274
|
-
function TUndefined(schema, references, value) {
|
|
275
|
-
return ValueCheck.Check(schema, references, value) ? ValueClone.Clone(value) : ValueCreate.Create(schema, references);
|
|
276
|
-
}
|
|
277
216
|
function TUnion(schema, references, value) {
|
|
278
|
-
return
|
|
279
|
-
}
|
|
280
|
-
function TUint8Array(schema, references, value) {
|
|
281
|
-
return ValueCheck.Check(schema, references, value) ? ValueClone.Clone(value) : ValueCreate.Create(schema, references);
|
|
282
|
-
}
|
|
283
|
-
function TUnknown(schema, references, value) {
|
|
284
|
-
return ValueCheck.Check(schema, references, value) ? ValueClone.Clone(value) : ValueCreate.Create(schema, references);
|
|
285
|
-
}
|
|
286
|
-
function TVoid(schema, references, value) {
|
|
287
|
-
return ValueCheck.Check(schema, references, value) ? ValueClone.Clone(value) : ValueCreate.Create(schema, references);
|
|
288
|
-
}
|
|
289
|
-
function TKind(schema, references, value) {
|
|
290
|
-
return ValueCheck.Check(schema, references, value) ? ValueClone.Clone(value) : ValueCreate.Create(schema, references);
|
|
217
|
+
return (0, check_1.Check)(schema, references, value) ? (0, clone_1.Clone)(value) : UnionCastCreate.Create(schema, references, value);
|
|
291
218
|
}
|
|
292
219
|
function Visit(schema, references, value) {
|
|
293
|
-
const references_ =
|
|
220
|
+
const references_ = (0, guard_1.IsString)(schema.$id) ? [...references, schema] : references;
|
|
294
221
|
const schema_ = schema;
|
|
295
222
|
switch (schema[Types.Kind]) {
|
|
296
|
-
|
|
297
|
-
|
|
223
|
+
// ------------------------------------------------------
|
|
224
|
+
// Structural
|
|
225
|
+
// ------------------------------------------------------
|
|
298
226
|
case 'Array':
|
|
299
227
|
return TArray(schema_, references_, value);
|
|
300
|
-
case 'AsyncIterator':
|
|
301
|
-
return TAsyncIterator(schema_, references_, value);
|
|
302
|
-
case 'BigInt':
|
|
303
|
-
return TBigInt(schema_, references_, value);
|
|
304
|
-
case 'Boolean':
|
|
305
|
-
return TBoolean(schema_, references_, value);
|
|
306
228
|
case 'Constructor':
|
|
307
229
|
return TConstructor(schema_, references_, value);
|
|
308
|
-
case 'Date':
|
|
309
|
-
return TDate(schema_, references_, value);
|
|
310
|
-
case 'Function':
|
|
311
|
-
return TFunction(schema_, references_, value);
|
|
312
|
-
case 'Integer':
|
|
313
|
-
return TInteger(schema_, references_, value);
|
|
314
230
|
case 'Intersect':
|
|
315
231
|
return TIntersect(schema_, references_, value);
|
|
316
|
-
case 'Iterator':
|
|
317
|
-
return TIterator(schema_, references_, value);
|
|
318
|
-
case 'Literal':
|
|
319
|
-
return TLiteral(schema_, references_, value);
|
|
320
232
|
case 'Never':
|
|
321
233
|
return TNever(schema_, references_, value);
|
|
322
|
-
case 'Not':
|
|
323
|
-
return TNot(schema_, references_, value);
|
|
324
|
-
case 'Null':
|
|
325
|
-
return TNull(schema_, references_, value);
|
|
326
|
-
case 'Number':
|
|
327
|
-
return TNumber(schema_, references_, value);
|
|
328
234
|
case 'Object':
|
|
329
235
|
return TObject(schema_, references_, value);
|
|
330
|
-
case 'Promise':
|
|
331
|
-
return TPromise(schema_, references_, value);
|
|
332
236
|
case 'Record':
|
|
333
237
|
return TRecord(schema_, references_, value);
|
|
334
238
|
case 'Ref':
|
|
335
239
|
return TRef(schema_, references_, value);
|
|
336
|
-
case 'String':
|
|
337
|
-
return TString(schema_, references_, value);
|
|
338
|
-
case 'Symbol':
|
|
339
|
-
return TSymbol(schema_, references_, value);
|
|
340
|
-
case 'TemplateLiteral':
|
|
341
|
-
return TTemplateLiteral(schema_, references_, value);
|
|
342
240
|
case 'This':
|
|
343
241
|
return TThis(schema_, references_, value);
|
|
344
242
|
case 'Tuple':
|
|
345
243
|
return TTuple(schema_, references_, value);
|
|
346
|
-
case 'Undefined':
|
|
347
|
-
return TUndefined(schema_, references_, value);
|
|
348
244
|
case 'Union':
|
|
349
245
|
return TUnion(schema_, references_, value);
|
|
246
|
+
// ------------------------------------------------------
|
|
247
|
+
// DefaultClone
|
|
248
|
+
// ------------------------------------------------------
|
|
249
|
+
case 'Date':
|
|
250
|
+
case 'Symbol':
|
|
350
251
|
case 'Uint8Array':
|
|
351
|
-
return
|
|
252
|
+
return DefaultClone(schema, references, value);
|
|
253
|
+
// ------------------------------------------------------
|
|
254
|
+
// Default
|
|
255
|
+
// ------------------------------------------------------
|
|
256
|
+
case 'Any':
|
|
257
|
+
case 'AsyncIterator':
|
|
258
|
+
case 'BigInt':
|
|
259
|
+
case 'Boolean':
|
|
260
|
+
case 'Function':
|
|
261
|
+
case 'Integer':
|
|
262
|
+
case 'Iterator':
|
|
263
|
+
case 'Literal':
|
|
264
|
+
case 'Not':
|
|
265
|
+
case 'Null':
|
|
266
|
+
case 'Number':
|
|
267
|
+
case 'Promise':
|
|
268
|
+
case 'String':
|
|
269
|
+
case 'TemplateLiteral':
|
|
270
|
+
case 'Undefined':
|
|
352
271
|
case 'Unknown':
|
|
353
|
-
return TUnknown(schema_, references_, value);
|
|
354
272
|
case 'Void':
|
|
355
|
-
return
|
|
273
|
+
return Default(schema_, references_, value);
|
|
356
274
|
default:
|
|
357
275
|
if (!Types.TypeRegistry.Has(schema_[Types.Kind]))
|
|
358
276
|
throw new ValueCastUnknownTypeError(schema_);
|
|
359
|
-
return
|
|
277
|
+
return Default(schema_, references_, value);
|
|
360
278
|
}
|
|
361
279
|
}
|
|
362
280
|
/** Casts a value into a given type. The return value will retain as much information of the original value as possible. */
|
package/value/check.d.ts
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import * as Types from '../typebox';
|
|
2
|
-
export declare class ValueCheckUnknownTypeError extends
|
|
2
|
+
export declare class ValueCheckUnknownTypeError extends Types.TypeBoxError {
|
|
3
3
|
readonly schema: Types.TSchema;
|
|
4
4
|
constructor(schema: Types.TSchema);
|
|
5
5
|
}
|
|
6
|
-
export declare class ValueCheckDereferenceError extends Error {
|
|
7
|
-
readonly schema: Types.TRef | Types.TThis;
|
|
8
|
-
constructor(schema: Types.TRef | Types.TThis);
|
|
9
|
-
}
|
|
10
6
|
/** Returns true if the value matches the given type. */
|
|
11
7
|
export declare function Check<T extends Types.TSchema>(schema: T, references: Types.TSchema[], value: unknown): value is Types.Static<T>;
|
|
12
8
|
/** Returns true if the value matches the given type. */
|