@sinclair/typebox 0.26.0-dev.4 → 0.26.0
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 +9 -4
- package/compiler/compiler.js +135 -108
- package/errors/errors.d.ts +5 -1
- package/errors/errors.js +173 -157
- package/package.json +1 -1
- package/readme.md +114 -101
- package/system/system.d.ts +4 -0
- package/system/system.js +15 -2
- package/typebox.d.ts +27 -36
- package/typebox.js +108 -173
- package/value/cast.d.ts +6 -2
- package/value/cast.js +130 -111
- package/value/check.d.ts +5 -1
- package/value/check.js +168 -154
- package/value/convert.d.ts +6 -6
- package/value/convert.js +83 -74
- package/value/create.d.ts +6 -2
- package/value/create.js +102 -77
- package/value/value.d.ts +10 -0
- package/value/value.js +15 -15
package/value/convert.js
CHANGED
|
@@ -27,26 +27,26 @@ THE SOFTWARE.
|
|
|
27
27
|
|
|
28
28
|
---------------------------------------------------------------------------*/
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.ValueConvert = exports.
|
|
30
|
+
exports.ValueConvert = exports.ValueConvertDereferenceError = exports.ValueConvertUnknownTypeError = void 0;
|
|
31
31
|
const Types = require("../typebox");
|
|
32
32
|
const clone_1 = require("./clone");
|
|
33
33
|
// ----------------------------------------------------------------------------------------------
|
|
34
34
|
// Errors
|
|
35
35
|
// ----------------------------------------------------------------------------------------------
|
|
36
|
-
class
|
|
36
|
+
class ValueConvertUnknownTypeError extends Error {
|
|
37
37
|
constructor(schema) {
|
|
38
|
-
super(
|
|
38
|
+
super('ValueConvert: Unknown type');
|
|
39
39
|
this.schema = schema;
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
exports.
|
|
43
|
-
class
|
|
42
|
+
exports.ValueConvertUnknownTypeError = ValueConvertUnknownTypeError;
|
|
43
|
+
class ValueConvertDereferenceError extends Error {
|
|
44
44
|
constructor(schema) {
|
|
45
|
-
super(
|
|
45
|
+
super(`ValueConvert: Unable to dereference schema with $id '${schema.$ref}'`);
|
|
46
46
|
this.schema = schema;
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
exports.
|
|
49
|
+
exports.ValueConvertDereferenceError = ValueConvertDereferenceError;
|
|
50
50
|
var ValueConvert;
|
|
51
51
|
(function (ValueConvert) {
|
|
52
52
|
// ----------------------------------------------------------------------------------------------
|
|
@@ -183,163 +183,172 @@ var ValueConvert;
|
|
|
183
183
|
// ----------------------------------------------------------------------------------------------
|
|
184
184
|
// Cast
|
|
185
185
|
// ----------------------------------------------------------------------------------------------
|
|
186
|
-
function Any(schema, value) {
|
|
186
|
+
function Any(schema, references, value) {
|
|
187
187
|
return value;
|
|
188
188
|
}
|
|
189
|
-
function Array(schema, value) {
|
|
189
|
+
function Array(schema, references, value) {
|
|
190
190
|
if (IsArray(value)) {
|
|
191
|
-
return value.map((value) => Visit(schema.items, value));
|
|
191
|
+
return value.map((value) => Visit(schema.items, references, value));
|
|
192
192
|
}
|
|
193
193
|
return value;
|
|
194
194
|
}
|
|
195
|
-
function BigInt(schema, value) {
|
|
195
|
+
function BigInt(schema, references, value) {
|
|
196
196
|
return TryConvertBigInt(value);
|
|
197
197
|
}
|
|
198
|
-
function Boolean(schema, value) {
|
|
198
|
+
function Boolean(schema, references, value) {
|
|
199
199
|
return TryConvertBoolean(value);
|
|
200
200
|
}
|
|
201
|
-
function Constructor(schema, value) {
|
|
201
|
+
function Constructor(schema, references, value) {
|
|
202
202
|
return clone_1.ValueClone.Clone(value);
|
|
203
203
|
}
|
|
204
|
-
function Date(schema, value) {
|
|
204
|
+
function Date(schema, references, value) {
|
|
205
205
|
return TryConvertDate(value);
|
|
206
206
|
}
|
|
207
|
-
function Function(schema, value) {
|
|
207
|
+
function Function(schema, references, value) {
|
|
208
208
|
return value;
|
|
209
209
|
}
|
|
210
|
-
function Integer(schema, value) {
|
|
210
|
+
function Integer(schema, references, value) {
|
|
211
211
|
return TryConvertInteger(value);
|
|
212
212
|
}
|
|
213
|
-
function Intersect(schema, value) {
|
|
213
|
+
function Intersect(schema, references, value) {
|
|
214
214
|
return value;
|
|
215
215
|
}
|
|
216
|
-
function Literal(schema, value) {
|
|
216
|
+
function Literal(schema, references, value) {
|
|
217
217
|
return TryConvertLiteral(schema, value);
|
|
218
218
|
}
|
|
219
|
-
function Never(schema, value) {
|
|
219
|
+
function Never(schema, references, value) {
|
|
220
220
|
return value;
|
|
221
221
|
}
|
|
222
|
-
function Null(schema, value) {
|
|
222
|
+
function Null(schema, references, value) {
|
|
223
223
|
return TryConvertNull(value);
|
|
224
224
|
}
|
|
225
|
-
function Number(schema, value) {
|
|
225
|
+
function Number(schema, references, value) {
|
|
226
226
|
return TryConvertNumber(value);
|
|
227
227
|
}
|
|
228
|
-
function Object(schema, value) {
|
|
228
|
+
function Object(schema, references, value) {
|
|
229
229
|
if (IsObject(value))
|
|
230
230
|
return globalThis.Object.keys(schema.properties).reduce((acc, key) => {
|
|
231
|
-
return value[key] !== undefined ? { ...acc, [key]: Visit(schema.properties[key], value[key]) } : { ...acc };
|
|
231
|
+
return value[key] !== undefined ? { ...acc, [key]: Visit(schema.properties[key], references, value[key]) } : { ...acc };
|
|
232
232
|
}, value);
|
|
233
233
|
return value;
|
|
234
234
|
}
|
|
235
|
-
function Promise(schema, value) {
|
|
235
|
+
function Promise(schema, references, value) {
|
|
236
236
|
return value;
|
|
237
237
|
}
|
|
238
|
-
function Record(schema, value) {
|
|
238
|
+
function Record(schema, references, value) {
|
|
239
239
|
return value;
|
|
240
240
|
}
|
|
241
|
-
function Ref(schema, value) {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
241
|
+
function Ref(schema, references, value) {
|
|
242
|
+
const index = references.findIndex((foreign) => foreign.$id === schema.$ref);
|
|
243
|
+
if (index === -1)
|
|
244
|
+
throw new ValueConvertDereferenceError(schema);
|
|
245
|
+
const target = references[index];
|
|
246
|
+
return Visit(target, references, value);
|
|
247
|
+
}
|
|
248
|
+
function Self(schema, references, value) {
|
|
249
|
+
const index = references.findIndex((foreign) => foreign.$id === schema.$ref);
|
|
250
|
+
if (index === -1)
|
|
251
|
+
throw new ValueConvertDereferenceError(schema);
|
|
252
|
+
const target = references[index];
|
|
253
|
+
return Visit(target, references, value);
|
|
254
|
+
}
|
|
255
|
+
function String(schema, references, value) {
|
|
248
256
|
return TryConvertString(value);
|
|
249
257
|
}
|
|
250
|
-
function Symbol(schema, value) {
|
|
258
|
+
function Symbol(schema, references, value) {
|
|
251
259
|
return value;
|
|
252
260
|
}
|
|
253
|
-
function Tuple(schema, value) {
|
|
261
|
+
function Tuple(schema, references, value) {
|
|
254
262
|
if (IsArray(value) && schema.items !== undefined) {
|
|
255
263
|
return value.map((value, index) => {
|
|
256
|
-
return index < schema.items.length ? Visit(schema.items[index], value) : value;
|
|
264
|
+
return index < schema.items.length ? Visit(schema.items[index], references, value) : value;
|
|
257
265
|
});
|
|
258
266
|
}
|
|
259
267
|
return value;
|
|
260
268
|
}
|
|
261
|
-
function Undefined(schema, value) {
|
|
269
|
+
function Undefined(schema, references, value) {
|
|
262
270
|
return TryConvertUndefined(value);
|
|
263
271
|
}
|
|
264
|
-
function Union(schema, value) {
|
|
272
|
+
function Union(schema, references, value) {
|
|
265
273
|
return value;
|
|
266
274
|
}
|
|
267
|
-
function Uint8Array(schema, value) {
|
|
275
|
+
function Uint8Array(schema, references, value) {
|
|
268
276
|
return value;
|
|
269
277
|
}
|
|
270
|
-
function Unknown(schema, value) {
|
|
278
|
+
function Unknown(schema, references, value) {
|
|
271
279
|
return value;
|
|
272
280
|
}
|
|
273
|
-
function Void(schema, value) {
|
|
281
|
+
function Void(schema, references, value) {
|
|
274
282
|
return value;
|
|
275
283
|
}
|
|
276
|
-
function UserDefined(schema, value) {
|
|
284
|
+
function UserDefined(schema, references, value) {
|
|
277
285
|
return value;
|
|
278
286
|
}
|
|
279
|
-
function Visit(schema, value) {
|
|
280
|
-
const
|
|
287
|
+
function Visit(schema, references, value) {
|
|
288
|
+
const references_ = IsString(schema.$id) ? [...references, schema] : references;
|
|
289
|
+
const schema_ = schema;
|
|
281
290
|
switch (schema[Types.Kind]) {
|
|
282
291
|
case 'Any':
|
|
283
|
-
return Any(
|
|
292
|
+
return Any(schema_, references_, value);
|
|
284
293
|
case 'Array':
|
|
285
|
-
return Array(
|
|
294
|
+
return Array(schema_, references_, value);
|
|
286
295
|
case 'BigInt':
|
|
287
|
-
return BigInt(
|
|
296
|
+
return BigInt(schema_, references_, value);
|
|
288
297
|
case 'Boolean':
|
|
289
|
-
return Boolean(
|
|
298
|
+
return Boolean(schema_, references_, value);
|
|
290
299
|
case 'Constructor':
|
|
291
|
-
return Constructor(
|
|
300
|
+
return Constructor(schema_, references_, value);
|
|
292
301
|
case 'Date':
|
|
293
|
-
return Date(
|
|
302
|
+
return Date(schema_, references_, value);
|
|
294
303
|
case 'Function':
|
|
295
|
-
return Function(
|
|
304
|
+
return Function(schema_, references_, value);
|
|
296
305
|
case 'Integer':
|
|
297
|
-
return Integer(
|
|
306
|
+
return Integer(schema_, references_, value);
|
|
298
307
|
case 'Intersect':
|
|
299
|
-
return Intersect(
|
|
308
|
+
return Intersect(schema_, references_, value);
|
|
300
309
|
case 'Literal':
|
|
301
|
-
return Literal(
|
|
310
|
+
return Literal(schema_, references_, value);
|
|
302
311
|
case 'Never':
|
|
303
|
-
return Never(
|
|
312
|
+
return Never(schema_, references_, value);
|
|
304
313
|
case 'Null':
|
|
305
|
-
return Null(
|
|
314
|
+
return Null(schema_, references_, value);
|
|
306
315
|
case 'Number':
|
|
307
|
-
return Number(
|
|
316
|
+
return Number(schema_, references_, value);
|
|
308
317
|
case 'Object':
|
|
309
|
-
return Object(
|
|
318
|
+
return Object(schema_, references_, value);
|
|
310
319
|
case 'Promise':
|
|
311
|
-
return Promise(
|
|
320
|
+
return Promise(schema_, references_, value);
|
|
312
321
|
case 'Record':
|
|
313
|
-
return Record(
|
|
322
|
+
return Record(schema_, references_, value);
|
|
314
323
|
case 'Ref':
|
|
315
|
-
return Ref(
|
|
324
|
+
return Ref(schema_, references_, value);
|
|
316
325
|
case 'Self':
|
|
317
|
-
return Self(
|
|
326
|
+
return Self(schema_, references_, value);
|
|
318
327
|
case 'String':
|
|
319
|
-
return String(
|
|
328
|
+
return String(schema_, references_, value);
|
|
320
329
|
case 'Symbol':
|
|
321
|
-
return Symbol(
|
|
330
|
+
return Symbol(schema_, references_, value);
|
|
322
331
|
case 'Tuple':
|
|
323
|
-
return Tuple(
|
|
332
|
+
return Tuple(schema_, references_, value);
|
|
324
333
|
case 'Undefined':
|
|
325
|
-
return Undefined(
|
|
334
|
+
return Undefined(schema_, references_, value);
|
|
326
335
|
case 'Union':
|
|
327
|
-
return Union(
|
|
336
|
+
return Union(schema_, references_, value);
|
|
328
337
|
case 'Uint8Array':
|
|
329
|
-
return Uint8Array(
|
|
338
|
+
return Uint8Array(schema_, references_, value);
|
|
330
339
|
case 'Unknown':
|
|
331
|
-
return Unknown(
|
|
340
|
+
return Unknown(schema_, references_, value);
|
|
332
341
|
case 'Void':
|
|
333
|
-
return Void(
|
|
342
|
+
return Void(schema_, references_, value);
|
|
334
343
|
default:
|
|
335
|
-
if (!Types.TypeRegistry.Has(
|
|
336
|
-
throw new ValueConvertUnknownTypeError(
|
|
337
|
-
return UserDefined(
|
|
344
|
+
if (!Types.TypeRegistry.Has(schema_[Types.Kind]))
|
|
345
|
+
throw new ValueConvertUnknownTypeError(schema_);
|
|
346
|
+
return UserDefined(schema_, references_, value);
|
|
338
347
|
}
|
|
339
348
|
}
|
|
340
349
|
ValueConvert.Visit = Visit;
|
|
341
|
-
function Convert(schema, value) {
|
|
342
|
-
return Visit(schema, clone_1.ValueClone.Clone(value));
|
|
350
|
+
function Convert(schema, references, value) {
|
|
351
|
+
return Visit(schema, references, clone_1.ValueClone.Clone(value));
|
|
343
352
|
}
|
|
344
353
|
ValueConvert.Convert = Convert;
|
|
345
354
|
})(ValueConvert = exports.ValueConvert || (exports.ValueConvert = {}));
|
package/value/create.d.ts
CHANGED
|
@@ -11,8 +11,12 @@ export declare class ValueCreateIntersectTypeError extends Error {
|
|
|
11
11
|
readonly schema: Types.TSchema;
|
|
12
12
|
constructor(schema: Types.TSchema);
|
|
13
13
|
}
|
|
14
|
+
export declare class ValueCreateDereferenceError extends Error {
|
|
15
|
+
readonly schema: Types.TRef | Types.TSelf;
|
|
16
|
+
constructor(schema: Types.TRef | Types.TSelf);
|
|
17
|
+
}
|
|
14
18
|
export declare namespace ValueCreate {
|
|
15
19
|
/** Creates a value from the given schema. If the schema specifies a default value, then that value is returned. */
|
|
16
|
-
function Visit
|
|
17
|
-
function Create<T extends Types.TSchema>(schema: T): Types.Static<T>;
|
|
20
|
+
function Visit(schema: Types.TSchema, references: Types.TSchema[]): unknown;
|
|
21
|
+
function Create<T extends Types.TSchema>(schema: T, references: Types.TSchema[]): Types.Static<T>;
|
|
18
22
|
}
|