@sinclair/typebox 0.32.0-dev-20 → 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 +4 -4
- package/build/import/index.mjs +1 -1
- 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/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 +2 -2
- 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 +4 -4
- package/build/require/index.js +4 -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/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 +2 -2
- 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 +47 -47
- /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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HasPropertyKey, IsString } from '../guard/index.mjs';
|
|
2
2
|
import { Check } from '../check/index.mjs';
|
|
3
3
|
import { Deref } from '../deref/index.mjs';
|
|
4
|
-
import {
|
|
4
|
+
import { TemplateLiteralGenerate, IsTemplateLiteralFinite } from '../../type/template-literal/index.mjs';
|
|
5
5
|
import { PatternStringExact, PatternNumberExact } from '../../type/patterns/index.mjs';
|
|
6
6
|
import { TypeRegistry } from '../../type/registry/index.mjs';
|
|
7
7
|
import { Kind } from '../../type/symbols/index.mjs';
|
|
@@ -55,7 +55,7 @@ export class ValueCreateRecursiveInstantiationError extends Error {
|
|
|
55
55
|
// ------------------------------------------------------------------
|
|
56
56
|
// Create
|
|
57
57
|
// ------------------------------------------------------------------
|
|
58
|
-
function
|
|
58
|
+
function FromAny(schema, references) {
|
|
59
59
|
if (HasPropertyKey(schema, 'default')) {
|
|
60
60
|
return schema.default;
|
|
61
61
|
}
|
|
@@ -63,7 +63,7 @@ function TAny(schema, references) {
|
|
|
63
63
|
return {};
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
function
|
|
66
|
+
function FromArray(schema, references) {
|
|
67
67
|
if (schema.uniqueItems === true && !HasPropertyKey(schema, 'default')) {
|
|
68
68
|
throw new Error('ValueCreate.Array: Array with the uniqueItems constraint requires a default value');
|
|
69
69
|
}
|
|
@@ -82,7 +82,7 @@ function TArray(schema, references) {
|
|
|
82
82
|
return [];
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
-
function
|
|
85
|
+
function FromAsyncIterator(schema, references) {
|
|
86
86
|
if (HasPropertyKey(schema, 'default')) {
|
|
87
87
|
return schema.default;
|
|
88
88
|
}
|
|
@@ -90,7 +90,7 @@ function TAsyncIterator(schema, references) {
|
|
|
90
90
|
return (async function* () { })();
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
|
-
function
|
|
93
|
+
function FromBigInt(schema, references) {
|
|
94
94
|
if (HasPropertyKey(schema, 'default')) {
|
|
95
95
|
return schema.default;
|
|
96
96
|
}
|
|
@@ -98,7 +98,7 @@ function TBigInt(schema, references) {
|
|
|
98
98
|
return BigInt(0);
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
|
-
function
|
|
101
|
+
function FromBoolean(schema, references) {
|
|
102
102
|
if (HasPropertyKey(schema, 'default')) {
|
|
103
103
|
return schema.default;
|
|
104
104
|
}
|
|
@@ -106,7 +106,7 @@ function TBoolean(schema, references) {
|
|
|
106
106
|
return false;
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
|
-
function
|
|
109
|
+
function FromConstructor(schema, references) {
|
|
110
110
|
if (HasPropertyKey(schema, 'default')) {
|
|
111
111
|
return schema.default;
|
|
112
112
|
}
|
|
@@ -128,7 +128,7 @@ function TConstructor(schema, references) {
|
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
|
-
function
|
|
131
|
+
function FromDate(schema, references) {
|
|
132
132
|
if (HasPropertyKey(schema, 'default')) {
|
|
133
133
|
return schema.default;
|
|
134
134
|
}
|
|
@@ -139,7 +139,7 @@ function TDate(schema, references) {
|
|
|
139
139
|
return new Date();
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
|
-
function
|
|
142
|
+
function FromFunction(schema, references) {
|
|
143
143
|
if (HasPropertyKey(schema, 'default')) {
|
|
144
144
|
return schema.default;
|
|
145
145
|
}
|
|
@@ -147,7 +147,7 @@ function TFunction(schema, references) {
|
|
|
147
147
|
return () => Visit(schema.returns, references);
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
|
-
function
|
|
150
|
+
function FromInteger(schema, references) {
|
|
151
151
|
if (HasPropertyKey(schema, 'default')) {
|
|
152
152
|
return schema.default;
|
|
153
153
|
}
|
|
@@ -158,7 +158,7 @@ function TInteger(schema, references) {
|
|
|
158
158
|
return 0;
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
|
-
function
|
|
161
|
+
function FromIntersect(schema, references) {
|
|
162
162
|
if (HasPropertyKey(schema, 'default')) {
|
|
163
163
|
return schema.default;
|
|
164
164
|
}
|
|
@@ -179,7 +179,7 @@ function TIntersect(schema, references) {
|
|
|
179
179
|
return value;
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
|
-
function
|
|
182
|
+
function FromIterator(schema, references) {
|
|
183
183
|
if (HasPropertyKey(schema, 'default')) {
|
|
184
184
|
return schema.default;
|
|
185
185
|
}
|
|
@@ -187,7 +187,7 @@ function TIterator(schema, references) {
|
|
|
187
187
|
return (function* () { })();
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
|
-
function
|
|
190
|
+
function FromLiteral(schema, references) {
|
|
191
191
|
if (HasPropertyKey(schema, 'default')) {
|
|
192
192
|
return schema.default;
|
|
193
193
|
}
|
|
@@ -195,10 +195,10 @@ function TLiteral(schema, references) {
|
|
|
195
195
|
return schema.const;
|
|
196
196
|
}
|
|
197
197
|
}
|
|
198
|
-
function
|
|
198
|
+
function FromNever(schema, references) {
|
|
199
199
|
throw new ValueCreateNeverTypeError(schema);
|
|
200
200
|
}
|
|
201
|
-
function
|
|
201
|
+
function FromNot(schema, references) {
|
|
202
202
|
if (HasPropertyKey(schema, 'default')) {
|
|
203
203
|
return schema.default;
|
|
204
204
|
}
|
|
@@ -206,7 +206,7 @@ function TNot(schema, references) {
|
|
|
206
206
|
throw new ValueCreateNotTypeError(schema);
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
|
-
function
|
|
209
|
+
function FromNull(schema, references) {
|
|
210
210
|
if (HasPropertyKey(schema, 'default')) {
|
|
211
211
|
return schema.default;
|
|
212
212
|
}
|
|
@@ -214,7 +214,7 @@ function TNull(schema, references) {
|
|
|
214
214
|
return null;
|
|
215
215
|
}
|
|
216
216
|
}
|
|
217
|
-
function
|
|
217
|
+
function FromNumber(schema, references) {
|
|
218
218
|
if (HasPropertyKey(schema, 'default')) {
|
|
219
219
|
return schema.default;
|
|
220
220
|
}
|
|
@@ -225,7 +225,7 @@ function TNumber(schema, references) {
|
|
|
225
225
|
return 0;
|
|
226
226
|
}
|
|
227
227
|
}
|
|
228
|
-
function
|
|
228
|
+
function FromObject(schema, references) {
|
|
229
229
|
if (HasPropertyKey(schema, 'default')) {
|
|
230
230
|
return schema.default;
|
|
231
231
|
}
|
|
@@ -237,7 +237,7 @@ function TObject(schema, references) {
|
|
|
237
237
|
}, {}));
|
|
238
238
|
}
|
|
239
239
|
}
|
|
240
|
-
function
|
|
240
|
+
function FromPromise(schema, references) {
|
|
241
241
|
if (HasPropertyKey(schema, 'default')) {
|
|
242
242
|
return schema.default;
|
|
243
243
|
}
|
|
@@ -245,7 +245,7 @@ function TPromise(schema, references) {
|
|
|
245
245
|
return Promise.resolve(Visit(schema.item, references));
|
|
246
246
|
}
|
|
247
247
|
}
|
|
248
|
-
function
|
|
248
|
+
function FromRecord(schema, references) {
|
|
249
249
|
const [keyPattern, valueSchema] = Object.entries(schema.patternProperties)[0];
|
|
250
250
|
if (HasPropertyKey(schema, 'default')) {
|
|
251
251
|
return schema.default;
|
|
@@ -260,7 +260,7 @@ function TRecord(schema, references) {
|
|
|
260
260
|
return {};
|
|
261
261
|
}
|
|
262
262
|
}
|
|
263
|
-
function
|
|
263
|
+
function FromRef(schema, references) {
|
|
264
264
|
if (HasPropertyKey(schema, 'default')) {
|
|
265
265
|
return schema.default;
|
|
266
266
|
}
|
|
@@ -268,7 +268,7 @@ function TRef(schema, references) {
|
|
|
268
268
|
return Visit(Deref(schema, references), references);
|
|
269
269
|
}
|
|
270
270
|
}
|
|
271
|
-
function
|
|
271
|
+
function FromString(schema, references) {
|
|
272
272
|
if (schema.pattern !== undefined) {
|
|
273
273
|
if (!HasPropertyKey(schema, 'default')) {
|
|
274
274
|
throw new Error('ValueCreate.String: String types with patterns must specify a default value');
|
|
@@ -299,7 +299,7 @@ function TString(schema, references) {
|
|
|
299
299
|
}
|
|
300
300
|
}
|
|
301
301
|
}
|
|
302
|
-
function
|
|
302
|
+
function FromSymbol(schema, references) {
|
|
303
303
|
if (HasPropertyKey(schema, 'default')) {
|
|
304
304
|
return schema.default;
|
|
305
305
|
}
|
|
@@ -310,17 +310,16 @@ function TSymbol(schema, references) {
|
|
|
310
310
|
return Symbol();
|
|
311
311
|
}
|
|
312
312
|
}
|
|
313
|
-
function
|
|
313
|
+
function FromTemplateLiteral(schema, references) {
|
|
314
314
|
if (HasPropertyKey(schema, 'default')) {
|
|
315
315
|
return schema.default;
|
|
316
316
|
}
|
|
317
|
-
|
|
318
|
-
if (!IsTemplateLiteralFinite(expression))
|
|
317
|
+
if (!IsTemplateLiteralFinite(schema))
|
|
319
318
|
throw new ValueCreateTempateLiteralTypeError(schema);
|
|
320
|
-
const
|
|
321
|
-
return
|
|
319
|
+
const generated = TemplateLiteralGenerate(schema);
|
|
320
|
+
return generated[0];
|
|
322
321
|
}
|
|
323
|
-
function
|
|
322
|
+
function FromThis(schema, references) {
|
|
324
323
|
if (recursiveDepth++ > recursiveMaxDepth)
|
|
325
324
|
throw new ValueCreateRecursiveInstantiationError(schema, recursiveMaxDepth);
|
|
326
325
|
if (HasPropertyKey(schema, 'default')) {
|
|
@@ -330,7 +329,7 @@ function TThis(schema, references) {
|
|
|
330
329
|
return Visit(Deref(schema, references), references);
|
|
331
330
|
}
|
|
332
331
|
}
|
|
333
|
-
function
|
|
332
|
+
function FromTuple(schema, references) {
|
|
334
333
|
if (HasPropertyKey(schema, 'default')) {
|
|
335
334
|
return schema.default;
|
|
336
335
|
}
|
|
@@ -341,7 +340,7 @@ function TTuple(schema, references) {
|
|
|
341
340
|
return Array.from({ length: schema.minItems }).map((_, index) => Visit(schema.items[index], references));
|
|
342
341
|
}
|
|
343
342
|
}
|
|
344
|
-
function
|
|
343
|
+
function FromUndefined(schema, references) {
|
|
345
344
|
if (HasPropertyKey(schema, 'default')) {
|
|
346
345
|
return schema.default;
|
|
347
346
|
}
|
|
@@ -349,7 +348,7 @@ function TUndefined(schema, references) {
|
|
|
349
348
|
return undefined;
|
|
350
349
|
}
|
|
351
350
|
}
|
|
352
|
-
function
|
|
351
|
+
function FromUnion(schema, references) {
|
|
353
352
|
if (HasPropertyKey(schema, 'default')) {
|
|
354
353
|
return schema.default;
|
|
355
354
|
}
|
|
@@ -360,7 +359,7 @@ function TUnion(schema, references) {
|
|
|
360
359
|
return Visit(schema.anyOf[0], references);
|
|
361
360
|
}
|
|
362
361
|
}
|
|
363
|
-
function
|
|
362
|
+
function FromUint8Array(schema, references) {
|
|
364
363
|
if (HasPropertyKey(schema, 'default')) {
|
|
365
364
|
return schema.default;
|
|
366
365
|
}
|
|
@@ -371,7 +370,7 @@ function TUint8Array(schema, references) {
|
|
|
371
370
|
return new Uint8Array(0);
|
|
372
371
|
}
|
|
373
372
|
}
|
|
374
|
-
function
|
|
373
|
+
function FromUnknown(schema, references) {
|
|
375
374
|
if (HasPropertyKey(schema, 'default')) {
|
|
376
375
|
return schema.default;
|
|
377
376
|
}
|
|
@@ -379,7 +378,7 @@ function TUnknown(schema, references) {
|
|
|
379
378
|
return {};
|
|
380
379
|
}
|
|
381
380
|
}
|
|
382
|
-
function
|
|
381
|
+
function FromVoid(schema, references) {
|
|
383
382
|
if (HasPropertyKey(schema, 'default')) {
|
|
384
383
|
return schema.default;
|
|
385
384
|
}
|
|
@@ -387,7 +386,7 @@ function TVoid(schema, references) {
|
|
|
387
386
|
return void 0;
|
|
388
387
|
}
|
|
389
388
|
}
|
|
390
|
-
function
|
|
389
|
+
function FromKind(schema, references) {
|
|
391
390
|
if (HasPropertyKey(schema, 'default')) {
|
|
392
391
|
return schema.default;
|
|
393
392
|
}
|
|
@@ -400,69 +399,69 @@ function Visit(schema, references) {
|
|
|
400
399
|
const schema_ = schema;
|
|
401
400
|
switch (schema_[Kind]) {
|
|
402
401
|
case 'Any':
|
|
403
|
-
return
|
|
402
|
+
return FromAny(schema_, references_);
|
|
404
403
|
case 'Array':
|
|
405
|
-
return
|
|
404
|
+
return FromArray(schema_, references_);
|
|
406
405
|
case 'AsyncIterator':
|
|
407
|
-
return
|
|
406
|
+
return FromAsyncIterator(schema_, references_);
|
|
408
407
|
case 'BigInt':
|
|
409
|
-
return
|
|
408
|
+
return FromBigInt(schema_, references_);
|
|
410
409
|
case 'Boolean':
|
|
411
|
-
return
|
|
410
|
+
return FromBoolean(schema_, references_);
|
|
412
411
|
case 'Constructor':
|
|
413
|
-
return
|
|
412
|
+
return FromConstructor(schema_, references_);
|
|
414
413
|
case 'Date':
|
|
415
|
-
return
|
|
414
|
+
return FromDate(schema_, references_);
|
|
416
415
|
case 'Function':
|
|
417
|
-
return
|
|
416
|
+
return FromFunction(schema_, references_);
|
|
418
417
|
case 'Integer':
|
|
419
|
-
return
|
|
418
|
+
return FromInteger(schema_, references_);
|
|
420
419
|
case 'Intersect':
|
|
421
|
-
return
|
|
420
|
+
return FromIntersect(schema_, references_);
|
|
422
421
|
case 'Iterator':
|
|
423
|
-
return
|
|
422
|
+
return FromIterator(schema_, references_);
|
|
424
423
|
case 'Literal':
|
|
425
|
-
return
|
|
424
|
+
return FromLiteral(schema_, references_);
|
|
426
425
|
case 'Never':
|
|
427
|
-
return
|
|
426
|
+
return FromNever(schema_, references_);
|
|
428
427
|
case 'Not':
|
|
429
|
-
return
|
|
428
|
+
return FromNot(schema_, references_);
|
|
430
429
|
case 'Null':
|
|
431
|
-
return
|
|
430
|
+
return FromNull(schema_, references_);
|
|
432
431
|
case 'Number':
|
|
433
|
-
return
|
|
432
|
+
return FromNumber(schema_, references_);
|
|
434
433
|
case 'Object':
|
|
435
|
-
return
|
|
434
|
+
return FromObject(schema_, references_);
|
|
436
435
|
case 'Promise':
|
|
437
|
-
return
|
|
436
|
+
return FromPromise(schema_, references_);
|
|
438
437
|
case 'Record':
|
|
439
|
-
return
|
|
438
|
+
return FromRecord(schema_, references_);
|
|
440
439
|
case 'Ref':
|
|
441
|
-
return
|
|
440
|
+
return FromRef(schema_, references_);
|
|
442
441
|
case 'String':
|
|
443
|
-
return
|
|
442
|
+
return FromString(schema_, references_);
|
|
444
443
|
case 'Symbol':
|
|
445
|
-
return
|
|
444
|
+
return FromSymbol(schema_, references_);
|
|
446
445
|
case 'TemplateLiteral':
|
|
447
|
-
return
|
|
446
|
+
return FromTemplateLiteral(schema_, references_);
|
|
448
447
|
case 'This':
|
|
449
|
-
return
|
|
448
|
+
return FromThis(schema_, references_);
|
|
450
449
|
case 'Tuple':
|
|
451
|
-
return
|
|
450
|
+
return FromTuple(schema_, references_);
|
|
452
451
|
case 'Undefined':
|
|
453
|
-
return
|
|
452
|
+
return FromUndefined(schema_, references_);
|
|
454
453
|
case 'Union':
|
|
455
|
-
return
|
|
454
|
+
return FromUnion(schema_, references_);
|
|
456
455
|
case 'Uint8Array':
|
|
457
|
-
return
|
|
456
|
+
return FromUint8Array(schema_, references_);
|
|
458
457
|
case 'Unknown':
|
|
459
|
-
return
|
|
458
|
+
return FromUnknown(schema_, references_);
|
|
460
459
|
case 'Void':
|
|
461
|
-
return
|
|
460
|
+
return FromVoid(schema_, references_);
|
|
462
461
|
default:
|
|
463
462
|
if (!TypeRegistry.Has(schema_[Kind]))
|
|
464
463
|
throw new ValueCreateUnknownTypeError(schema_);
|
|
465
|
-
return
|
|
464
|
+
return FromKind(schema_, references_);
|
|
466
465
|
}
|
|
467
466
|
}
|
|
468
467
|
// ------------------------------------------------------------------
|
|
@@ -32,7 +32,7 @@ function IsDefaultSchema(value) {
|
|
|
32
32
|
// ------------------------------------------------------------------
|
|
33
33
|
// Types
|
|
34
34
|
// ------------------------------------------------------------------
|
|
35
|
-
function
|
|
35
|
+
function FromArray(schema, references, value) {
|
|
36
36
|
const defaulted = ValueOrDefault(schema, value);
|
|
37
37
|
if (!IsArray(defaulted))
|
|
38
38
|
return defaulted;
|
|
@@ -41,14 +41,14 @@ function TArray(schema, references, value) {
|
|
|
41
41
|
}
|
|
42
42
|
return defaulted;
|
|
43
43
|
}
|
|
44
|
-
function
|
|
44
|
+
function FromIntersect(schema, references, value) {
|
|
45
45
|
const defaulted = ValueOrDefault(schema, value);
|
|
46
46
|
return schema.allOf.reduce((acc, schema) => {
|
|
47
47
|
const next = Visit(schema, references, defaulted);
|
|
48
48
|
return IsObject(next) ? { ...acc, ...next } : next;
|
|
49
49
|
}, {});
|
|
50
50
|
}
|
|
51
|
-
function
|
|
51
|
+
function FromObject(schema, references, value) {
|
|
52
52
|
const defaulted = ValueOrDefault(schema, value);
|
|
53
53
|
if (!IsObject(defaulted))
|
|
54
54
|
return defaulted;
|
|
@@ -71,7 +71,7 @@ function TObject(schema, references, value) {
|
|
|
71
71
|
}
|
|
72
72
|
return defaulted;
|
|
73
73
|
}
|
|
74
|
-
function
|
|
74
|
+
function FromRecord(schema, references, value) {
|
|
75
75
|
const defaulted = ValueOrDefault(schema, value);
|
|
76
76
|
if (!IsObject(defaulted))
|
|
77
77
|
return defaulted;
|
|
@@ -95,13 +95,13 @@ function TRecord(schema, references, value) {
|
|
|
95
95
|
}
|
|
96
96
|
return defaulted;
|
|
97
97
|
}
|
|
98
|
-
function
|
|
98
|
+
function FromRef(schema, references, value) {
|
|
99
99
|
return Visit(Deref(schema, references), references, ValueOrDefault(schema, value));
|
|
100
100
|
}
|
|
101
|
-
function
|
|
101
|
+
function FromThis(schema, references, value) {
|
|
102
102
|
return Visit(Deref(schema, references), references, value);
|
|
103
103
|
}
|
|
104
|
-
function
|
|
104
|
+
function FromTuple(schema, references, value) {
|
|
105
105
|
const defaulted = ValueOrDefault(schema, value);
|
|
106
106
|
if (!IsArray(defaulted) || IsUndefined(schema.items))
|
|
107
107
|
return defaulted;
|
|
@@ -112,7 +112,7 @@ function TTuple(schema, references, value) {
|
|
|
112
112
|
}
|
|
113
113
|
return defaulted;
|
|
114
114
|
}
|
|
115
|
-
function
|
|
115
|
+
function FromUnion(schema, references, value) {
|
|
116
116
|
const defaulted = ValueOrDefault(schema, value);
|
|
117
117
|
for (const inner of schema.anyOf) {
|
|
118
118
|
const result = Visit(inner, references, defaulted);
|
|
@@ -127,21 +127,21 @@ function Visit(schema, references, value) {
|
|
|
127
127
|
const schema_ = schema;
|
|
128
128
|
switch (schema_[Kind]) {
|
|
129
129
|
case 'Array':
|
|
130
|
-
return
|
|
130
|
+
return FromArray(schema_, references_, value);
|
|
131
131
|
case 'Intersect':
|
|
132
|
-
return
|
|
132
|
+
return FromIntersect(schema_, references_, value);
|
|
133
133
|
case 'Object':
|
|
134
|
-
return
|
|
134
|
+
return FromObject(schema_, references_, value);
|
|
135
135
|
case 'Record':
|
|
136
|
-
return
|
|
136
|
+
return FromRecord(schema_, references_, value);
|
|
137
137
|
case 'Ref':
|
|
138
|
-
return
|
|
138
|
+
return FromRef(schema_, references_, value);
|
|
139
139
|
case 'This':
|
|
140
|
-
return
|
|
140
|
+
return FromThis(schema_, references_, value);
|
|
141
141
|
case 'Tuple':
|
|
142
|
-
return
|
|
142
|
+
return FromTuple(schema_, references_, value);
|
|
143
143
|
case 'Union':
|
|
144
|
-
return
|
|
144
|
+
return FromUnion(schema_, references_, value);
|
|
145
145
|
default:
|
|
146
146
|
return ValueOrDefault(schema_, value);
|
|
147
147
|
}
|
|
@@ -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
|
}
|