@sinclair/typebox 0.26.0-dev.4 → 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 +16 -27
- package/typebox.js +104 -163
- 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/cast.js
CHANGED
|
@@ -27,7 +27,7 @@ THE SOFTWARE.
|
|
|
27
27
|
|
|
28
28
|
---------------------------------------------------------------------------*/
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.ValueCast = exports.ValueCastUnknownTypeError = exports.ValueCastRecursiveTypeError = exports.ValueCastNeverTypeError = exports.ValueCastArrayUniqueItemsTypeError = exports.ValueCastReferenceTypeError = void 0;
|
|
30
|
+
exports.ValueCast = exports.ValueCastDereferenceError = exports.ValueCastUnknownTypeError = exports.ValueCastRecursiveTypeError = exports.ValueCastNeverTypeError = exports.ValueCastArrayUniqueItemsTypeError = exports.ValueCastReferenceTypeError = void 0;
|
|
31
31
|
const Types = require("../typebox");
|
|
32
32
|
const create_1 = require("./create");
|
|
33
33
|
const check_1 = require("./check");
|
|
@@ -71,6 +71,13 @@ class ValueCastUnknownTypeError extends Error {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
exports.ValueCastUnknownTypeError = ValueCastUnknownTypeError;
|
|
74
|
+
class ValueCastDereferenceError extends Error {
|
|
75
|
+
constructor(schema) {
|
|
76
|
+
super(`ValueCast: Unable to dereference schema with $id '${schema.$ref}'`);
|
|
77
|
+
this.schema = schema;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.ValueCastDereferenceError = ValueCastDereferenceError;
|
|
74
81
|
// ----------------------------------------------------------------------------------------------
|
|
75
82
|
// The following will score a schema against a value. For objects, the score is the tally of
|
|
76
83
|
// points awarded for each property of the value. Property points are (1.0 / propertyCount)
|
|
@@ -79,7 +86,7 @@ exports.ValueCastUnknownTypeError = ValueCastUnknownTypeError;
|
|
|
79
86
|
// ----------------------------------------------------------------------------------------------
|
|
80
87
|
var UnionCastCreate;
|
|
81
88
|
(function (UnionCastCreate) {
|
|
82
|
-
function Score(schema, value) {
|
|
89
|
+
function Score(schema, references, value) {
|
|
83
90
|
if (schema[Types.Kind] === 'Object' && typeof value === 'object' && value !== null) {
|
|
84
91
|
const object = schema;
|
|
85
92
|
const keys = Object.keys(value);
|
|
@@ -87,19 +94,19 @@ var UnionCastCreate;
|
|
|
87
94
|
const [point, max] = [1 / entries.length, entries.length];
|
|
88
95
|
return entries.reduce((acc, [key, schema]) => {
|
|
89
96
|
const literal = schema[Types.Kind] === 'Literal' && schema.const === value[key] ? max : 0;
|
|
90
|
-
const checks = check_1.ValueCheck.Check(schema, value[key]) ? point : 0;
|
|
97
|
+
const checks = check_1.ValueCheck.Check(schema, references, value[key]) ? point : 0;
|
|
91
98
|
const exists = keys.includes(key) ? point : 0;
|
|
92
99
|
return acc + (literal + checks + exists);
|
|
93
100
|
}, 0);
|
|
94
101
|
}
|
|
95
102
|
else {
|
|
96
|
-
return check_1.ValueCheck.Check(schema, value) ? 1 : 0;
|
|
103
|
+
return check_1.ValueCheck.Check(schema, references, value) ? 1 : 0;
|
|
97
104
|
}
|
|
98
105
|
}
|
|
99
|
-
function Select(union, value) {
|
|
106
|
+
function Select(union, references, value) {
|
|
100
107
|
let [select, best] = [union.anyOf[0], 0];
|
|
101
108
|
for (const schema of union.anyOf) {
|
|
102
|
-
const score = Score(schema, value);
|
|
109
|
+
const score = Score(schema, references, value);
|
|
103
110
|
if (score > best) {
|
|
104
111
|
select = schema;
|
|
105
112
|
best = score;
|
|
@@ -107,13 +114,13 @@ var UnionCastCreate;
|
|
|
107
114
|
}
|
|
108
115
|
return select;
|
|
109
116
|
}
|
|
110
|
-
function Create(union, value) {
|
|
117
|
+
function Create(union, references, value) {
|
|
111
118
|
if (union.default !== undefined) {
|
|
112
119
|
return union.default;
|
|
113
120
|
}
|
|
114
121
|
else {
|
|
115
|
-
const schema = Select(union, value);
|
|
116
|
-
return ValueCast.Cast(schema, value);
|
|
122
|
+
const schema = Select(union, references, value);
|
|
123
|
+
return ValueCast.Cast(schema, references, value);
|
|
117
124
|
}
|
|
118
125
|
}
|
|
119
126
|
UnionCastCreate.Create = Create;
|
|
@@ -132,84 +139,87 @@ var ValueCast;
|
|
|
132
139
|
function IsNumber(value) {
|
|
133
140
|
return typeof value === 'number' && !isNaN(value);
|
|
134
141
|
}
|
|
142
|
+
function IsString(value) {
|
|
143
|
+
return typeof value === 'string';
|
|
144
|
+
}
|
|
135
145
|
// ----------------------------------------------------------------------------------------------
|
|
136
146
|
// Cast
|
|
137
147
|
// ----------------------------------------------------------------------------------------------
|
|
138
|
-
function Any(schema, value) {
|
|
139
|
-
return check_1.ValueCheck.Check(schema, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema);
|
|
148
|
+
function Any(schema, references, value) {
|
|
149
|
+
return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references);
|
|
140
150
|
}
|
|
141
|
-
function Array(schema, value) {
|
|
142
|
-
if (check_1.ValueCheck.Check(schema, value))
|
|
151
|
+
function Array(schema, references, value) {
|
|
152
|
+
if (check_1.ValueCheck.Check(schema, references, value))
|
|
143
153
|
return clone_1.ValueClone.Clone(value);
|
|
144
|
-
const created = IsArray(value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema);
|
|
154
|
+
const created = IsArray(value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references);
|
|
145
155
|
const minimum = IsNumber(schema.minItems) && created.length < schema.minItems ? [...created, ...globalThis.Array.from({ length: schema.minItems - created.length }, () => null)] : created;
|
|
146
156
|
const maximum = IsNumber(schema.maxItems) && minimum.length > schema.maxItems ? minimum.slice(0, schema.maxItems) : minimum;
|
|
147
|
-
const casted = maximum.map((value) => Visit(schema.items, value));
|
|
157
|
+
const casted = maximum.map((value) => Visit(schema.items, references, value));
|
|
148
158
|
if (schema.uniqueItems !== true)
|
|
149
159
|
return casted;
|
|
150
160
|
const unique = [...new Set(casted)];
|
|
151
|
-
if (!check_1.ValueCheck.Check(schema, unique))
|
|
161
|
+
if (!check_1.ValueCheck.Check(schema, references, unique))
|
|
152
162
|
throw new ValueCastArrayUniqueItemsTypeError(schema, unique);
|
|
153
163
|
return unique;
|
|
154
164
|
}
|
|
155
|
-
function BigInt(schema, value) {
|
|
156
|
-
return check_1.ValueCheck.Check(schema, value) ? value : create_1.ValueCreate.Create(schema);
|
|
165
|
+
function BigInt(schema, references, value) {
|
|
166
|
+
return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references);
|
|
157
167
|
}
|
|
158
|
-
function Boolean(schema, value) {
|
|
159
|
-
return check_1.ValueCheck.Check(schema, value) ? value : create_1.ValueCreate.Create(schema);
|
|
168
|
+
function Boolean(schema, references, value) {
|
|
169
|
+
return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references);
|
|
160
170
|
}
|
|
161
|
-
function Constructor(schema, value) {
|
|
162
|
-
if (check_1.ValueCheck.Check(schema, value))
|
|
163
|
-
return create_1.ValueCreate.Create(schema);
|
|
171
|
+
function Constructor(schema, references, value) {
|
|
172
|
+
if (check_1.ValueCheck.Check(schema, references, value))
|
|
173
|
+
return create_1.ValueCreate.Create(schema, references);
|
|
164
174
|
const required = new Set(schema.returns.required || []);
|
|
165
175
|
const result = function () { };
|
|
166
176
|
for (const [key, property] of globalThis.Object.entries(schema.returns.properties)) {
|
|
167
177
|
if (!required.has(key) && value.prototype[key] === undefined)
|
|
168
178
|
continue;
|
|
169
|
-
result.prototype[key] = Visit(property, value.prototype[key]);
|
|
179
|
+
result.prototype[key] = Visit(property, references, value.prototype[key]);
|
|
170
180
|
}
|
|
171
181
|
return result;
|
|
172
182
|
}
|
|
173
|
-
function Date(schema, value) {
|
|
174
|
-
return check_1.ValueCheck.Check(schema, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema);
|
|
183
|
+
function Date(schema, references, value) {
|
|
184
|
+
return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references);
|
|
175
185
|
}
|
|
176
|
-
function Function(schema, value) {
|
|
177
|
-
return check_1.ValueCheck.Check(schema, value) ? value : create_1.ValueCreate.Create(schema);
|
|
186
|
+
function Function(schema, references, value) {
|
|
187
|
+
return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references);
|
|
178
188
|
}
|
|
179
|
-
function Integer(schema, value) {
|
|
180
|
-
return check_1.ValueCheck.Check(schema, value) ? value : create_1.ValueCreate.Create(schema);
|
|
189
|
+
function Integer(schema, references, value) {
|
|
190
|
+
return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references);
|
|
181
191
|
}
|
|
182
|
-
function Intersect(schema, value) {
|
|
183
|
-
const created = create_1.ValueCreate.Create(schema);
|
|
192
|
+
function Intersect(schema, references, value) {
|
|
193
|
+
const created = create_1.ValueCreate.Create(schema, references);
|
|
184
194
|
const mapped = IsObject(created) && IsObject(value) ? { ...created, ...value } : value;
|
|
185
|
-
return check_1.ValueCheck.Check(schema, mapped) ? mapped : create_1.ValueCreate.Create(schema);
|
|
195
|
+
return check_1.ValueCheck.Check(schema, references, mapped) ? mapped : create_1.ValueCreate.Create(schema, references);
|
|
186
196
|
}
|
|
187
|
-
function Literal(schema, value) {
|
|
188
|
-
return check_1.ValueCheck.Check(schema, value) ? value : create_1.ValueCreate.Create(schema);
|
|
197
|
+
function Literal(schema, references, value) {
|
|
198
|
+
return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references);
|
|
189
199
|
}
|
|
190
|
-
function Never(schema, value) {
|
|
200
|
+
function Never(schema, references, value) {
|
|
191
201
|
throw new ValueCastNeverTypeError(schema);
|
|
192
202
|
}
|
|
193
|
-
function Not(schema, value) {
|
|
194
|
-
return check_1.ValueCheck.Check(schema, value) ? value : create_1.ValueCreate.Create(schema.allOf[1]);
|
|
203
|
+
function Not(schema, references, value) {
|
|
204
|
+
return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema.allOf[1], references);
|
|
195
205
|
}
|
|
196
|
-
function Null(schema, value) {
|
|
197
|
-
return check_1.ValueCheck.Check(schema, value) ? value : create_1.ValueCreate.Create(schema);
|
|
206
|
+
function Null(schema, references, value) {
|
|
207
|
+
return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references);
|
|
198
208
|
}
|
|
199
|
-
function Number(schema, value) {
|
|
200
|
-
return check_1.ValueCheck.Check(schema, value) ? value : create_1.ValueCreate.Create(schema);
|
|
209
|
+
function Number(schema, references, value) {
|
|
210
|
+
return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references);
|
|
201
211
|
}
|
|
202
|
-
function Object(schema, value) {
|
|
203
|
-
if (check_1.ValueCheck.Check(schema, value))
|
|
212
|
+
function Object(schema, references, value) {
|
|
213
|
+
if (check_1.ValueCheck.Check(schema, references, value))
|
|
204
214
|
return value;
|
|
205
215
|
if (value === null || typeof value !== 'object')
|
|
206
|
-
return create_1.ValueCreate.Create(schema);
|
|
216
|
+
return create_1.ValueCreate.Create(schema, references);
|
|
207
217
|
const required = new Set(schema.required || []);
|
|
208
218
|
const result = {};
|
|
209
219
|
for (const [key, property] of globalThis.Object.entries(schema.properties)) {
|
|
210
220
|
if (!required.has(key) && value[key] === undefined)
|
|
211
221
|
continue;
|
|
212
|
-
result[key] = Visit(property, value[key]);
|
|
222
|
+
result[key] = Visit(property, references, value[key]);
|
|
213
223
|
}
|
|
214
224
|
// additional schema properties
|
|
215
225
|
if (typeof schema.additionalProperties === 'object') {
|
|
@@ -217,132 +227,141 @@ var ValueCast;
|
|
|
217
227
|
for (const propertyName of globalThis.Object.getOwnPropertyNames(value)) {
|
|
218
228
|
if (propertyNames.includes(propertyName))
|
|
219
229
|
continue;
|
|
220
|
-
result[propertyName] = Visit(schema.additionalProperties, value[propertyName]);
|
|
230
|
+
result[propertyName] = Visit(schema.additionalProperties, references, value[propertyName]);
|
|
221
231
|
}
|
|
222
232
|
}
|
|
223
233
|
return result;
|
|
224
234
|
}
|
|
225
|
-
function Promise(schema, value) {
|
|
226
|
-
return check_1.ValueCheck.Check(schema, value) ? value : create_1.ValueCreate.Create(schema);
|
|
235
|
+
function Promise(schema, references, value) {
|
|
236
|
+
return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references);
|
|
227
237
|
}
|
|
228
|
-
function Record(schema, value) {
|
|
229
|
-
if (check_1.ValueCheck.Check(schema, value))
|
|
238
|
+
function Record(schema, references, value) {
|
|
239
|
+
if (check_1.ValueCheck.Check(schema, references, value))
|
|
230
240
|
return clone_1.ValueClone.Clone(value);
|
|
231
241
|
if (value === null || typeof value !== 'object' || globalThis.Array.isArray(value) || value instanceof globalThis.Date)
|
|
232
|
-
return create_1.ValueCreate.Create(schema);
|
|
242
|
+
return create_1.ValueCreate.Create(schema, references);
|
|
233
243
|
const subschemaPropertyName = globalThis.Object.getOwnPropertyNames(schema.patternProperties)[0];
|
|
234
244
|
const subschema = schema.patternProperties[subschemaPropertyName];
|
|
235
245
|
const result = {};
|
|
236
246
|
for (const [propKey, propValue] of globalThis.Object.entries(value)) {
|
|
237
|
-
result[propKey] = Visit(subschema, propValue);
|
|
247
|
+
result[propKey] = Visit(subschema, references, propValue);
|
|
238
248
|
}
|
|
239
249
|
return result;
|
|
240
250
|
}
|
|
241
|
-
function Ref(schema, value) {
|
|
242
|
-
|
|
251
|
+
function Ref(schema, references, value) {
|
|
252
|
+
const index = references.findIndex((foreign) => foreign.$id === schema.$ref);
|
|
253
|
+
if (index === -1)
|
|
254
|
+
throw new ValueCastDereferenceError(schema);
|
|
255
|
+
const target = references[index];
|
|
256
|
+
return Visit(target, references, value);
|
|
243
257
|
}
|
|
244
|
-
function Self(schema, value) {
|
|
245
|
-
|
|
258
|
+
function Self(schema, references, value) {
|
|
259
|
+
const index = references.findIndex((foreign) => foreign.$id === schema.$ref);
|
|
260
|
+
if (index === -1)
|
|
261
|
+
throw new ValueCastDereferenceError(schema);
|
|
262
|
+
const target = references[index];
|
|
263
|
+
return Visit(target, references, value);
|
|
246
264
|
}
|
|
247
|
-
function String(schema, value) {
|
|
248
|
-
return check_1.ValueCheck.Check(schema, value) ? value : create_1.ValueCreate.Create(schema);
|
|
265
|
+
function String(schema, references, value) {
|
|
266
|
+
return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references);
|
|
249
267
|
}
|
|
250
|
-
function Symbol(schema, value) {
|
|
251
|
-
return check_1.ValueCheck.Check(schema, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema);
|
|
268
|
+
function Symbol(schema, references, value) {
|
|
269
|
+
return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references);
|
|
252
270
|
}
|
|
253
|
-
function Tuple(schema, value) {
|
|
254
|
-
if (check_1.ValueCheck.Check(schema, value))
|
|
271
|
+
function Tuple(schema, references, value) {
|
|
272
|
+
if (check_1.ValueCheck.Check(schema, references, value))
|
|
255
273
|
return clone_1.ValueClone.Clone(value);
|
|
256
274
|
if (!globalThis.Array.isArray(value))
|
|
257
|
-
return create_1.ValueCreate.Create(schema);
|
|
275
|
+
return create_1.ValueCreate.Create(schema, references);
|
|
258
276
|
if (schema.items === undefined)
|
|
259
277
|
return [];
|
|
260
|
-
return schema.items.map((schema, index) => Visit(schema, value[index]));
|
|
278
|
+
return schema.items.map((schema, index) => Visit(schema, references, value[index]));
|
|
261
279
|
}
|
|
262
|
-
function Undefined(schema, value) {
|
|
263
|
-
return check_1.ValueCheck.Check(schema, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema);
|
|
280
|
+
function Undefined(schema, references, value) {
|
|
281
|
+
return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references);
|
|
264
282
|
}
|
|
265
|
-
function Union(schema, value) {
|
|
266
|
-
return check_1.ValueCheck.Check(schema, value) ? clone_1.ValueClone.Clone(value) : UnionCastCreate.Create(schema, value);
|
|
283
|
+
function Union(schema, references, value) {
|
|
284
|
+
return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : UnionCastCreate.Create(schema, references, value);
|
|
267
285
|
}
|
|
268
|
-
function Uint8Array(schema, value) {
|
|
269
|
-
return check_1.ValueCheck.Check(schema, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema);
|
|
286
|
+
function Uint8Array(schema, references, value) {
|
|
287
|
+
return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references);
|
|
270
288
|
}
|
|
271
|
-
function Unknown(schema, value) {
|
|
272
|
-
return check_1.ValueCheck.Check(schema, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema);
|
|
289
|
+
function Unknown(schema, references, value) {
|
|
290
|
+
return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references);
|
|
273
291
|
}
|
|
274
|
-
function Void(schema, value) {
|
|
275
|
-
return check_1.ValueCheck.Check(schema, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema);
|
|
292
|
+
function Void(schema, references, value) {
|
|
293
|
+
return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references);
|
|
276
294
|
}
|
|
277
|
-
function UserDefined(schema, value) {
|
|
278
|
-
return check_1.ValueCheck.Check(schema, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema);
|
|
295
|
+
function UserDefined(schema, references, value) {
|
|
296
|
+
return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references);
|
|
279
297
|
}
|
|
280
|
-
function Visit(schema, value) {
|
|
281
|
-
const
|
|
298
|
+
function Visit(schema, references, value) {
|
|
299
|
+
const references_ = IsString(schema.$id) ? [...references, schema] : references;
|
|
300
|
+
const schema_ = schema;
|
|
282
301
|
switch (schema[Types.Kind]) {
|
|
283
302
|
case 'Any':
|
|
284
|
-
return Any(
|
|
303
|
+
return Any(schema_, references_, value);
|
|
285
304
|
case 'Array':
|
|
286
|
-
return Array(
|
|
305
|
+
return Array(schema_, references_, value);
|
|
287
306
|
case 'BigInt':
|
|
288
|
-
return BigInt(
|
|
307
|
+
return BigInt(schema_, references_, value);
|
|
289
308
|
case 'Boolean':
|
|
290
|
-
return Boolean(
|
|
309
|
+
return Boolean(schema_, references_, value);
|
|
291
310
|
case 'Constructor':
|
|
292
|
-
return Constructor(
|
|
311
|
+
return Constructor(schema_, references_, value);
|
|
293
312
|
case 'Date':
|
|
294
|
-
return Date(
|
|
313
|
+
return Date(schema_, references_, value);
|
|
295
314
|
case 'Function':
|
|
296
|
-
return Function(
|
|
315
|
+
return Function(schema_, references_, value);
|
|
297
316
|
case 'Integer':
|
|
298
|
-
return Integer(
|
|
317
|
+
return Integer(schema_, references_, value);
|
|
299
318
|
case 'Intersect':
|
|
300
|
-
return Intersect(
|
|
319
|
+
return Intersect(schema_, references_, value);
|
|
301
320
|
case 'Literal':
|
|
302
|
-
return Literal(
|
|
321
|
+
return Literal(schema_, references_, value);
|
|
303
322
|
case 'Never':
|
|
304
|
-
return Never(
|
|
323
|
+
return Never(schema_, references_, value);
|
|
305
324
|
case 'Not':
|
|
306
|
-
return Not(
|
|
325
|
+
return Not(schema_, references_, value);
|
|
307
326
|
case 'Null':
|
|
308
|
-
return Null(
|
|
327
|
+
return Null(schema_, references_, value);
|
|
309
328
|
case 'Number':
|
|
310
|
-
return Number(
|
|
329
|
+
return Number(schema_, references_, value);
|
|
311
330
|
case 'Object':
|
|
312
|
-
return Object(
|
|
331
|
+
return Object(schema_, references_, value);
|
|
313
332
|
case 'Promise':
|
|
314
|
-
return Promise(
|
|
333
|
+
return Promise(schema_, references_, value);
|
|
315
334
|
case 'Record':
|
|
316
|
-
return Record(
|
|
335
|
+
return Record(schema_, references_, value);
|
|
317
336
|
case 'Ref':
|
|
318
|
-
return Ref(
|
|
337
|
+
return Ref(schema_, references_, value);
|
|
319
338
|
case 'Self':
|
|
320
|
-
return Self(
|
|
339
|
+
return Self(schema_, references_, value);
|
|
321
340
|
case 'String':
|
|
322
|
-
return String(
|
|
341
|
+
return String(schema_, references_, value);
|
|
323
342
|
case 'Symbol':
|
|
324
|
-
return Symbol(
|
|
343
|
+
return Symbol(schema_, references_, value);
|
|
325
344
|
case 'Tuple':
|
|
326
|
-
return Tuple(
|
|
345
|
+
return Tuple(schema_, references_, value);
|
|
327
346
|
case 'Undefined':
|
|
328
|
-
return Undefined(
|
|
347
|
+
return Undefined(schema_, references_, value);
|
|
329
348
|
case 'Union':
|
|
330
|
-
return Union(
|
|
349
|
+
return Union(schema_, references_, value);
|
|
331
350
|
case 'Uint8Array':
|
|
332
|
-
return Uint8Array(
|
|
351
|
+
return Uint8Array(schema_, references_, value);
|
|
333
352
|
case 'Unknown':
|
|
334
|
-
return Unknown(
|
|
353
|
+
return Unknown(schema_, references_, value);
|
|
335
354
|
case 'Void':
|
|
336
|
-
return Void(
|
|
355
|
+
return Void(schema_, references_, value);
|
|
337
356
|
default:
|
|
338
|
-
if (!Types.TypeRegistry.Has(
|
|
339
|
-
throw new ValueCastUnknownTypeError(
|
|
340
|
-
return UserDefined(
|
|
357
|
+
if (!Types.TypeRegistry.Has(schema_[Types.Kind]))
|
|
358
|
+
throw new ValueCastUnknownTypeError(schema_);
|
|
359
|
+
return UserDefined(schema_, references_, value);
|
|
341
360
|
}
|
|
342
361
|
}
|
|
343
362
|
ValueCast.Visit = Visit;
|
|
344
|
-
function Cast(schema, value) {
|
|
345
|
-
return Visit(schema, clone_1.ValueClone.Clone(value));
|
|
363
|
+
function Cast(schema, references, value) {
|
|
364
|
+
return Visit(schema, references, clone_1.ValueClone.Clone(value));
|
|
346
365
|
}
|
|
347
366
|
ValueCast.Cast = Cast;
|
|
348
367
|
})(ValueCast = exports.ValueCast || (exports.ValueCast = {}));
|
package/value/check.d.ts
CHANGED
|
@@ -3,6 +3,10 @@ export declare class ValueCheckUnknownTypeError extends Error {
|
|
|
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.TSelf;
|
|
8
|
+
constructor(schema: Types.TRef | Types.TSelf);
|
|
9
|
+
}
|
|
6
10
|
export declare namespace ValueCheck {
|
|
7
|
-
function Check<T extends Types.TSchema>(schema: T, value: any): boolean;
|
|
11
|
+
function Check<T extends Types.TSchema>(schema: T, references: Types.TSchema[], value: any): boolean;
|
|
8
12
|
}
|