@sinclair/typebox 0.26.0-dev.3 → 0.26.0-dev.5
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 +121 -97
- package/errors/errors.d.ts +5 -1
- package/errors/errors.js +173 -157
- package/package.json +1 -1
- package/readme.md +70 -71
- package/typebox.d.ts +24 -27
- package/typebox.js +115 -166
- 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 +13 -3
- package/value/value.js +15 -15
package/value/create.js
CHANGED
|
@@ -27,7 +27,7 @@ THE SOFTWARE.
|
|
|
27
27
|
|
|
28
28
|
---------------------------------------------------------------------------*/
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.ValueCreate = exports.ValueCreateIntersectTypeError = exports.ValueCreateNeverTypeError = exports.ValueCreateUnknownTypeError = void 0;
|
|
30
|
+
exports.ValueCreate = exports.ValueCreateDereferenceError = exports.ValueCreateIntersectTypeError = exports.ValueCreateNeverTypeError = exports.ValueCreateUnknownTypeError = void 0;
|
|
31
31
|
const Types = require("../typebox");
|
|
32
32
|
const check_1 = require("./check");
|
|
33
33
|
// --------------------------------------------------------------------------
|
|
@@ -54,12 +54,28 @@ class ValueCreateIntersectTypeError extends Error {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
exports.ValueCreateIntersectTypeError = ValueCreateIntersectTypeError;
|
|
57
|
+
class ValueCreateDereferenceError extends Error {
|
|
58
|
+
constructor(schema) {
|
|
59
|
+
super(`ValueCreate: Unable to dereference schema with $id '${schema.$ref}'`);
|
|
60
|
+
this.schema = schema;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.ValueCreateDereferenceError = ValueCreateDereferenceError;
|
|
57
64
|
// --------------------------------------------------------------------------
|
|
58
65
|
// ValueCreate
|
|
59
66
|
// --------------------------------------------------------------------------
|
|
60
67
|
var ValueCreate;
|
|
61
68
|
(function (ValueCreate) {
|
|
62
|
-
|
|
69
|
+
// --------------------------------------------------------
|
|
70
|
+
// Guards
|
|
71
|
+
// --------------------------------------------------------
|
|
72
|
+
function IsString(value) {
|
|
73
|
+
return typeof value === 'string';
|
|
74
|
+
}
|
|
75
|
+
// --------------------------------------------------------
|
|
76
|
+
// Types
|
|
77
|
+
// --------------------------------------------------------
|
|
78
|
+
function Any(schema, references) {
|
|
63
79
|
if ('default' in schema) {
|
|
64
80
|
return schema.default;
|
|
65
81
|
}
|
|
@@ -67,7 +83,7 @@ var ValueCreate;
|
|
|
67
83
|
return {};
|
|
68
84
|
}
|
|
69
85
|
}
|
|
70
|
-
function Array(schema) {
|
|
86
|
+
function Array(schema, references) {
|
|
71
87
|
if (schema.uniqueItems === true && schema.default === undefined) {
|
|
72
88
|
throw new Error('ValueCreate.Array: Arrays with uniqueItems require a default value');
|
|
73
89
|
}
|
|
@@ -76,14 +92,14 @@ var ValueCreate;
|
|
|
76
92
|
}
|
|
77
93
|
else if (schema.minItems !== undefined) {
|
|
78
94
|
return globalThis.Array.from({ length: schema.minItems }).map((item) => {
|
|
79
|
-
return ValueCreate.Create(schema.items);
|
|
95
|
+
return ValueCreate.Create(schema.items, references);
|
|
80
96
|
});
|
|
81
97
|
}
|
|
82
98
|
else {
|
|
83
99
|
return [];
|
|
84
100
|
}
|
|
85
101
|
}
|
|
86
|
-
function BigInt(schema) {
|
|
102
|
+
function BigInt(schema, references) {
|
|
87
103
|
if ('default' in schema) {
|
|
88
104
|
return schema.default;
|
|
89
105
|
}
|
|
@@ -91,7 +107,7 @@ var ValueCreate;
|
|
|
91
107
|
return globalThis.BigInt(0);
|
|
92
108
|
}
|
|
93
109
|
}
|
|
94
|
-
function Boolean(schema) {
|
|
110
|
+
function Boolean(schema, references) {
|
|
95
111
|
if ('default' in schema) {
|
|
96
112
|
return schema.default;
|
|
97
113
|
}
|
|
@@ -99,12 +115,12 @@ var ValueCreate;
|
|
|
99
115
|
return false;
|
|
100
116
|
}
|
|
101
117
|
}
|
|
102
|
-
function Constructor(schema) {
|
|
118
|
+
function Constructor(schema, references) {
|
|
103
119
|
if ('default' in schema) {
|
|
104
120
|
return schema.default;
|
|
105
121
|
}
|
|
106
122
|
else {
|
|
107
|
-
const value = ValueCreate.Create(schema.returns);
|
|
123
|
+
const value = ValueCreate.Create(schema.returns, references);
|
|
108
124
|
if (typeof value === 'object' && !globalThis.Array.isArray(value)) {
|
|
109
125
|
return class {
|
|
110
126
|
constructor() {
|
|
@@ -121,7 +137,7 @@ var ValueCreate;
|
|
|
121
137
|
}
|
|
122
138
|
}
|
|
123
139
|
}
|
|
124
|
-
function Date(schema) {
|
|
140
|
+
function Date(schema, references) {
|
|
125
141
|
if ('default' in schema) {
|
|
126
142
|
return schema.default;
|
|
127
143
|
}
|
|
@@ -132,15 +148,15 @@ var ValueCreate;
|
|
|
132
148
|
return new globalThis.Date(0);
|
|
133
149
|
}
|
|
134
150
|
}
|
|
135
|
-
function Function(schema) {
|
|
151
|
+
function Function(schema, references) {
|
|
136
152
|
if ('default' in schema) {
|
|
137
153
|
return schema.default;
|
|
138
154
|
}
|
|
139
155
|
else {
|
|
140
|
-
return () => ValueCreate.Create(schema.returns);
|
|
156
|
+
return () => ValueCreate.Create(schema.returns, references);
|
|
141
157
|
}
|
|
142
158
|
}
|
|
143
|
-
function Integer(schema) {
|
|
159
|
+
function Integer(schema, references) {
|
|
144
160
|
if ('default' in schema) {
|
|
145
161
|
return schema.default;
|
|
146
162
|
}
|
|
@@ -151,18 +167,18 @@ var ValueCreate;
|
|
|
151
167
|
return 0;
|
|
152
168
|
}
|
|
153
169
|
}
|
|
154
|
-
function Intersect(schema) {
|
|
170
|
+
function Intersect(schema, references) {
|
|
155
171
|
if ('default' in schema) {
|
|
156
172
|
return schema.default;
|
|
157
173
|
}
|
|
158
174
|
else {
|
|
159
|
-
const value = schema.type === 'object' ? schema.allOf.reduce((acc, schema) => ({ ...acc, ...Visit(schema) }), {}) : schema.allOf.reduce((_, schema) => Visit(schema), undefined);
|
|
160
|
-
if (!check_1.ValueCheck.Check(schema, value))
|
|
175
|
+
const value = schema.type === 'object' ? schema.allOf.reduce((acc, schema) => ({ ...acc, ...Visit(schema, references) }), {}) : schema.allOf.reduce((_, schema) => Visit(schema, references), undefined);
|
|
176
|
+
if (!check_1.ValueCheck.Check(schema, references, value))
|
|
161
177
|
throw new ValueCreateIntersectTypeError(schema);
|
|
162
178
|
return value;
|
|
163
179
|
}
|
|
164
180
|
}
|
|
165
|
-
function Literal(schema) {
|
|
181
|
+
function Literal(schema, references) {
|
|
166
182
|
if ('default' in schema) {
|
|
167
183
|
return schema.default;
|
|
168
184
|
}
|
|
@@ -170,18 +186,18 @@ var ValueCreate;
|
|
|
170
186
|
return schema.const;
|
|
171
187
|
}
|
|
172
188
|
}
|
|
173
|
-
function Never(schema) {
|
|
189
|
+
function Never(schema, references) {
|
|
174
190
|
throw new ValueCreateNeverTypeError(schema);
|
|
175
191
|
}
|
|
176
|
-
function Not(schema) {
|
|
192
|
+
function Not(schema, references) {
|
|
177
193
|
if ('default' in schema) {
|
|
178
194
|
return schema.default;
|
|
179
195
|
}
|
|
180
196
|
else {
|
|
181
|
-
return Visit(schema.allOf[1]);
|
|
197
|
+
return Visit(schema.allOf[1], references);
|
|
182
198
|
}
|
|
183
199
|
}
|
|
184
|
-
function Null(schema) {
|
|
200
|
+
function Null(schema, references) {
|
|
185
201
|
if ('default' in schema) {
|
|
186
202
|
return schema.default;
|
|
187
203
|
}
|
|
@@ -189,7 +205,7 @@ var ValueCreate;
|
|
|
189
205
|
return null;
|
|
190
206
|
}
|
|
191
207
|
}
|
|
192
|
-
function Number(schema) {
|
|
208
|
+
function Number(schema, references) {
|
|
193
209
|
if ('default' in schema) {
|
|
194
210
|
return schema.default;
|
|
195
211
|
}
|
|
@@ -200,7 +216,7 @@ var ValueCreate;
|
|
|
200
216
|
return 0;
|
|
201
217
|
}
|
|
202
218
|
}
|
|
203
|
-
function Object(schema) {
|
|
219
|
+
function Object(schema, references) {
|
|
204
220
|
if ('default' in schema) {
|
|
205
221
|
return schema.default;
|
|
206
222
|
}
|
|
@@ -208,19 +224,19 @@ var ValueCreate;
|
|
|
208
224
|
const required = new Set(schema.required);
|
|
209
225
|
return (schema.default ||
|
|
210
226
|
globalThis.Object.entries(schema.properties).reduce((acc, [key, schema]) => {
|
|
211
|
-
return required.has(key) ? { ...acc, [key]: ValueCreate.Create(schema) } : { ...acc };
|
|
227
|
+
return required.has(key) ? { ...acc, [key]: ValueCreate.Create(schema, references) } : { ...acc };
|
|
212
228
|
}, {}));
|
|
213
229
|
}
|
|
214
230
|
}
|
|
215
|
-
function Promise(schema) {
|
|
231
|
+
function Promise(schema, references) {
|
|
216
232
|
if ('default' in schema) {
|
|
217
233
|
return schema.default;
|
|
218
234
|
}
|
|
219
235
|
else {
|
|
220
|
-
return globalThis.Promise.resolve(ValueCreate.Create(schema.item));
|
|
236
|
+
return globalThis.Promise.resolve(ValueCreate.Create(schema.item, references));
|
|
221
237
|
}
|
|
222
238
|
}
|
|
223
|
-
function Record(schema) {
|
|
239
|
+
function Record(schema, references) {
|
|
224
240
|
const [keyPattern, valueSchema] = globalThis.Object.entries(schema.patternProperties)[0];
|
|
225
241
|
if ('default' in schema) {
|
|
226
242
|
return schema.default;
|
|
@@ -228,30 +244,38 @@ var ValueCreate;
|
|
|
228
244
|
else if (!(keyPattern === '^.*$' || keyPattern === '^(0|[1-9][0-9]*)$')) {
|
|
229
245
|
const propertyKeys = keyPattern.slice(1, keyPattern.length - 1).split('|');
|
|
230
246
|
return propertyKeys.reduce((acc, key) => {
|
|
231
|
-
return { ...acc, [key]: Create(valueSchema) };
|
|
247
|
+
return { ...acc, [key]: Create(valueSchema, references) };
|
|
232
248
|
}, {});
|
|
233
249
|
}
|
|
234
250
|
else {
|
|
235
251
|
return {};
|
|
236
252
|
}
|
|
237
253
|
}
|
|
238
|
-
function Ref(schema) {
|
|
254
|
+
function Ref(schema, references) {
|
|
239
255
|
if ('default' in schema) {
|
|
240
256
|
return schema.default;
|
|
241
257
|
}
|
|
242
258
|
else {
|
|
243
|
-
|
|
259
|
+
const index = references.findIndex((foreign) => foreign.$id === schema.$id);
|
|
260
|
+
if (index === -1)
|
|
261
|
+
throw new ValueCreateDereferenceError(schema);
|
|
262
|
+
const target = references[index];
|
|
263
|
+
return Visit(target, references);
|
|
244
264
|
}
|
|
245
265
|
}
|
|
246
|
-
function Self(schema) {
|
|
266
|
+
function Self(schema, references) {
|
|
247
267
|
if ('default' in schema) {
|
|
248
268
|
return schema.default;
|
|
249
269
|
}
|
|
250
270
|
else {
|
|
251
|
-
|
|
271
|
+
const index = references.findIndex((foreign) => foreign.$id === schema.$id);
|
|
272
|
+
if (index === -1)
|
|
273
|
+
throw new ValueCreateDereferenceError(schema);
|
|
274
|
+
const target = references[index];
|
|
275
|
+
return Visit(target, references);
|
|
252
276
|
}
|
|
253
277
|
}
|
|
254
|
-
function String(schema) {
|
|
278
|
+
function String(schema, references) {
|
|
255
279
|
if (schema.pattern !== undefined) {
|
|
256
280
|
if (!('default' in schema)) {
|
|
257
281
|
throw new Error('ValueCreate.String: String types with patterns must specify a default value');
|
|
@@ -282,7 +306,7 @@ var ValueCreate;
|
|
|
282
306
|
}
|
|
283
307
|
}
|
|
284
308
|
}
|
|
285
|
-
function Symbol(schema) {
|
|
309
|
+
function Symbol(schema, references) {
|
|
286
310
|
if ('default' in schema) {
|
|
287
311
|
return schema.default;
|
|
288
312
|
}
|
|
@@ -293,7 +317,7 @@ var ValueCreate;
|
|
|
293
317
|
return globalThis.Symbol();
|
|
294
318
|
}
|
|
295
319
|
}
|
|
296
|
-
function Tuple(schema) {
|
|
320
|
+
function Tuple(schema, references) {
|
|
297
321
|
if ('default' in schema) {
|
|
298
322
|
return schema.default;
|
|
299
323
|
}
|
|
@@ -301,10 +325,10 @@ var ValueCreate;
|
|
|
301
325
|
return [];
|
|
302
326
|
}
|
|
303
327
|
else {
|
|
304
|
-
return globalThis.Array.from({ length: schema.minItems }).map((_, index) => ValueCreate.Create(schema.items[index]));
|
|
328
|
+
return globalThis.Array.from({ length: schema.minItems }).map((_, index) => ValueCreate.Create(schema.items[index], references));
|
|
305
329
|
}
|
|
306
330
|
}
|
|
307
|
-
function Undefined(schema) {
|
|
331
|
+
function Undefined(schema, references) {
|
|
308
332
|
if ('default' in schema) {
|
|
309
333
|
return schema.default;
|
|
310
334
|
}
|
|
@@ -312,7 +336,7 @@ var ValueCreate;
|
|
|
312
336
|
return undefined;
|
|
313
337
|
}
|
|
314
338
|
}
|
|
315
|
-
function Union(schema) {
|
|
339
|
+
function Union(schema, references) {
|
|
316
340
|
if ('default' in schema) {
|
|
317
341
|
return schema.default;
|
|
318
342
|
}
|
|
@@ -320,10 +344,10 @@ var ValueCreate;
|
|
|
320
344
|
throw new Error('ValueCreate.Union: Cannot create Union with zero variants');
|
|
321
345
|
}
|
|
322
346
|
else {
|
|
323
|
-
return ValueCreate.Create(schema.anyOf[0]);
|
|
347
|
+
return ValueCreate.Create(schema.anyOf[0], references);
|
|
324
348
|
}
|
|
325
349
|
}
|
|
326
|
-
function Uint8Array(schema) {
|
|
350
|
+
function Uint8Array(schema, references) {
|
|
327
351
|
if ('default' in schema) {
|
|
328
352
|
return schema.default;
|
|
329
353
|
}
|
|
@@ -334,7 +358,7 @@ var ValueCreate;
|
|
|
334
358
|
return new globalThis.Uint8Array(0);
|
|
335
359
|
}
|
|
336
360
|
}
|
|
337
|
-
function Unknown(schema) {
|
|
361
|
+
function Unknown(schema, references) {
|
|
338
362
|
if ('default' in schema) {
|
|
339
363
|
return schema.default;
|
|
340
364
|
}
|
|
@@ -342,7 +366,7 @@ var ValueCreate;
|
|
|
342
366
|
return {};
|
|
343
367
|
}
|
|
344
368
|
}
|
|
345
|
-
function Void(schema) {
|
|
369
|
+
function Void(schema, references) {
|
|
346
370
|
if ('default' in schema) {
|
|
347
371
|
return schema.default;
|
|
348
372
|
}
|
|
@@ -350,7 +374,7 @@ var ValueCreate;
|
|
|
350
374
|
return void 0;
|
|
351
375
|
}
|
|
352
376
|
}
|
|
353
|
-
function UserDefined(schema) {
|
|
377
|
+
function UserDefined(schema, references) {
|
|
354
378
|
if ('default' in schema) {
|
|
355
379
|
return schema.default;
|
|
356
380
|
}
|
|
@@ -359,72 +383,73 @@ var ValueCreate;
|
|
|
359
383
|
}
|
|
360
384
|
}
|
|
361
385
|
/** Creates a value from the given schema. If the schema specifies a default value, then that value is returned. */
|
|
362
|
-
function Visit(schema) {
|
|
363
|
-
const
|
|
364
|
-
|
|
386
|
+
function Visit(schema, references) {
|
|
387
|
+
const references_ = IsString(schema.$id) ? [...references, schema] : references;
|
|
388
|
+
const schema_ = schema;
|
|
389
|
+
switch (schema_[Types.Kind]) {
|
|
365
390
|
case 'Any':
|
|
366
|
-
return Any(
|
|
391
|
+
return Any(schema_, references_);
|
|
367
392
|
case 'Array':
|
|
368
|
-
return Array(
|
|
393
|
+
return Array(schema_, references_);
|
|
369
394
|
case 'BigInt':
|
|
370
|
-
return BigInt(
|
|
395
|
+
return BigInt(schema_, references_);
|
|
371
396
|
case 'Boolean':
|
|
372
|
-
return Boolean(
|
|
397
|
+
return Boolean(schema_, references_);
|
|
373
398
|
case 'Constructor':
|
|
374
|
-
return Constructor(
|
|
399
|
+
return Constructor(schema_, references_);
|
|
375
400
|
case 'Date':
|
|
376
|
-
return Date(
|
|
401
|
+
return Date(schema_, references_);
|
|
377
402
|
case 'Function':
|
|
378
|
-
return Function(
|
|
403
|
+
return Function(schema_, references_);
|
|
379
404
|
case 'Integer':
|
|
380
|
-
return Integer(
|
|
405
|
+
return Integer(schema_, references_);
|
|
381
406
|
case 'Intersect':
|
|
382
|
-
return Intersect(
|
|
407
|
+
return Intersect(schema_, references_);
|
|
383
408
|
case 'Literal':
|
|
384
|
-
return Literal(
|
|
409
|
+
return Literal(schema_, references_);
|
|
385
410
|
case 'Never':
|
|
386
|
-
return Never(
|
|
411
|
+
return Never(schema_, references_);
|
|
387
412
|
case 'Not':
|
|
388
|
-
return Not(
|
|
413
|
+
return Not(schema_, references_);
|
|
389
414
|
case 'Null':
|
|
390
|
-
return Null(
|
|
415
|
+
return Null(schema_, references_);
|
|
391
416
|
case 'Number':
|
|
392
|
-
return Number(
|
|
417
|
+
return Number(schema_, references_);
|
|
393
418
|
case 'Object':
|
|
394
|
-
return Object(
|
|
419
|
+
return Object(schema_, references_);
|
|
395
420
|
case 'Promise':
|
|
396
|
-
return Promise(
|
|
421
|
+
return Promise(schema_, references_);
|
|
397
422
|
case 'Record':
|
|
398
|
-
return Record(
|
|
423
|
+
return Record(schema_, references_);
|
|
399
424
|
case 'Ref':
|
|
400
|
-
return Ref(
|
|
425
|
+
return Ref(schema_, references_);
|
|
401
426
|
case 'Self':
|
|
402
|
-
return Self(
|
|
427
|
+
return Self(schema_, references_);
|
|
403
428
|
case 'String':
|
|
404
|
-
return String(
|
|
429
|
+
return String(schema_, references_);
|
|
405
430
|
case 'Symbol':
|
|
406
|
-
return Symbol(
|
|
431
|
+
return Symbol(schema_, references_);
|
|
407
432
|
case 'Tuple':
|
|
408
|
-
return Tuple(
|
|
433
|
+
return Tuple(schema_, references_);
|
|
409
434
|
case 'Undefined':
|
|
410
|
-
return Undefined(
|
|
435
|
+
return Undefined(schema_, references_);
|
|
411
436
|
case 'Union':
|
|
412
|
-
return Union(
|
|
437
|
+
return Union(schema_, references_);
|
|
413
438
|
case 'Uint8Array':
|
|
414
|
-
return Uint8Array(
|
|
439
|
+
return Uint8Array(schema_, references_);
|
|
415
440
|
case 'Unknown':
|
|
416
|
-
return Unknown(
|
|
441
|
+
return Unknown(schema_, references_);
|
|
417
442
|
case 'Void':
|
|
418
|
-
return Void(
|
|
443
|
+
return Void(schema_, references_);
|
|
419
444
|
default:
|
|
420
|
-
if (!Types.TypeRegistry.Has(
|
|
421
|
-
throw new ValueCreateUnknownTypeError(
|
|
422
|
-
return UserDefined(
|
|
445
|
+
if (!Types.TypeRegistry.Has(schema_[Types.Kind]))
|
|
446
|
+
throw new ValueCreateUnknownTypeError(schema_);
|
|
447
|
+
return UserDefined(schema_, references_);
|
|
423
448
|
}
|
|
424
449
|
}
|
|
425
450
|
ValueCreate.Visit = Visit;
|
|
426
|
-
function Create(schema) {
|
|
427
|
-
return Visit(schema);
|
|
451
|
+
function Create(schema, references) {
|
|
452
|
+
return Visit(schema, references);
|
|
428
453
|
}
|
|
429
454
|
ValueCreate.Create = Create;
|
|
430
455
|
})(ValueCreate = exports.ValueCreate || (exports.ValueCreate = {}));
|
package/value/value.d.ts
CHANGED
|
@@ -1,20 +1,30 @@
|
|
|
1
1
|
import * as Types from '../typebox';
|
|
2
|
-
import {
|
|
2
|
+
import { ValueError } from '../errors/index';
|
|
3
3
|
import { Edit } from './delta';
|
|
4
4
|
/** Provides functions to perform structural updates to JavaScript values */
|
|
5
5
|
export declare namespace Value {
|
|
6
|
+
/** Casts a value into a given type. The return value will retain as much information of the original value as possible. Cast will convert string, number, boolean and date values if a reasonable conversion is possible. */
|
|
7
|
+
function Cast<T extends Types.TSchema, R extends Types.TSchema[]>(schema: T, references: [...R], value: unknown): Types.Static<T>;
|
|
6
8
|
/** Casts a value into a given type. The return value will retain as much information of the original value as possible. Cast will convert string, number, boolean and date values if a reasonable conversion is possible. */
|
|
7
9
|
function Cast<T extends Types.TSchema>(schema: T, value: unknown): Types.Static<T>;
|
|
8
10
|
/** Creates a value from the given type */
|
|
11
|
+
function Create<T extends Types.TSchema, R extends Types.TSchema[]>(schema: T, references: [...R]): Types.Static<T>;
|
|
12
|
+
/** Creates a value from the given type */
|
|
9
13
|
function Create<T extends Types.TSchema>(schema: T): Types.Static<T>;
|
|
10
14
|
/** Returns true if the value matches the given type. */
|
|
15
|
+
function Check<T extends Types.TSchema, R extends Types.TSchema[]>(schema: T, references: [...R], value: unknown): value is Types.Static<T>;
|
|
16
|
+
/** Returns true if the value matches the given type. */
|
|
11
17
|
function Check<T extends Types.TSchema>(schema: T, value: unknown): value is Types.Static<T>;
|
|
12
18
|
/** Converts any type mismatched values to their target type if a conversion is possible. */
|
|
13
|
-
function Convert<T extends Types.TSchema>(schema: T, value: unknown):
|
|
19
|
+
function Convert<T extends Types.TSchema, R extends Types.TSchema[]>(schema: T, references: [...R], value: unknown): value is Types.Static<T>;
|
|
20
|
+
/** Converts any type mismatched values to their target type if a conversion is possible. */
|
|
21
|
+
function Convert<T extends Types.TSchema>(schema: T, value: unknown): value is Types.Static<T>;
|
|
14
22
|
/** Returns a structural clone of the given value */
|
|
15
23
|
function Clone<T>(value: T): T;
|
|
16
24
|
/** Returns an iterator for each error in this value. */
|
|
17
|
-
function Errors<T extends Types.TSchema>(schema: T, value: unknown):
|
|
25
|
+
function Errors<T extends Types.TSchema, R extends Types.TSchema[]>(schema: T, references: [...R], value: unknown): IterableIterator<ValueError>;
|
|
26
|
+
/** Returns an iterator for each error in this value. */
|
|
27
|
+
function Errors<T extends Types.TSchema>(schema: T, value: unknown): IterableIterator<ValueError>;
|
|
18
28
|
/** Returns true if left and right values are structurally equal */
|
|
19
29
|
function Equal<T>(left: T, right: unknown): right is T;
|
|
20
30
|
/** Returns edits to transform the current value into the next value */
|
package/value/value.js
CHANGED
|
@@ -40,24 +40,24 @@ const delta_1 = require("./delta");
|
|
|
40
40
|
/** Provides functions to perform structural updates to JavaScript values */
|
|
41
41
|
var Value;
|
|
42
42
|
(function (Value) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return cast_1.ValueCast.Cast(schema, value);
|
|
43
|
+
function Cast(...args) {
|
|
44
|
+
const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]];
|
|
45
|
+
return cast_1.ValueCast.Cast(schema, references, value);
|
|
46
46
|
}
|
|
47
47
|
Value.Cast = Cast;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return create_1.ValueCreate.Create(schema);
|
|
48
|
+
function Create(...args) {
|
|
49
|
+
const [schema, references] = args.length === 2 ? [args[0], args[1]] : [args[0], []];
|
|
50
|
+
return create_1.ValueCreate.Create(schema, references);
|
|
51
51
|
}
|
|
52
52
|
Value.Create = Create;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return check_1.ValueCheck.Check(schema, value);
|
|
53
|
+
function Check(...args) {
|
|
54
|
+
const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]];
|
|
55
|
+
return check_1.ValueCheck.Check(schema, references, value);
|
|
56
56
|
}
|
|
57
57
|
Value.Check = Check;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return convert_1.ValueConvert.Convert(schema, value);
|
|
58
|
+
function Convert(...args) {
|
|
59
|
+
const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]];
|
|
60
|
+
return convert_1.ValueConvert.Convert(schema, references, value);
|
|
61
61
|
}
|
|
62
62
|
Value.Convert = Convert;
|
|
63
63
|
/** Returns a structural clone of the given value */
|
|
@@ -65,9 +65,9 @@ var Value;
|
|
|
65
65
|
return clone_1.ValueClone.Clone(value);
|
|
66
66
|
}
|
|
67
67
|
Value.Clone = Clone;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
function* Errors(...args) {
|
|
69
|
+
const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]];
|
|
70
|
+
yield* index_1.ValueErrors.Errors(schema, references, value);
|
|
71
71
|
}
|
|
72
72
|
Value.Errors = Errors;
|
|
73
73
|
/** Returns true if left and right values are structurally equal */
|