justus 0.0.1 → 0.0.2
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/README.md +153 -34
- package/dist/dts-generator.js +166 -0
- package/dist/dts-generator.js.map +6 -0
- package/dist/dts-generator.mjs +156 -0
- package/dist/dts-generator.mjs.map +6 -0
- package/dist/{index.cjs → index.js} +122 -120
- package/dist/index.js.map +6 -0
- package/dist/index.mjs +117 -119
- package/dist/index.mjs.map +1 -1
- package/dts-generator.d.ts +13 -0
- package/{dist/index.d.ts → index.d.ts} +72 -12
- package/package.json +19 -9
- package/src/dts-generator.ts +274 -0
- package/src/index.ts +4 -4
- package/src/types.ts +9 -0
- package/src/validators/array.ts +11 -9
- package/src/validators/number.ts +52 -20
- package/src/validators/object.ts +65 -46
- package/src/validators/string.ts +23 -9
- package/src/validators/tuple.ts +17 -13
- package/dist/index.cjs.map +0 -6
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
// src/dts-generator.ts
|
|
2
|
+
import ts from "typescript";
|
|
3
|
+
import {
|
|
4
|
+
AllOfValidator,
|
|
5
|
+
AnyArrayValidator,
|
|
6
|
+
AnyNumberValidator,
|
|
7
|
+
AnyObjectValidator,
|
|
8
|
+
AnyStringValidator,
|
|
9
|
+
AnyValidator,
|
|
10
|
+
ArrayValidator,
|
|
11
|
+
assertSchema,
|
|
12
|
+
BooleanValidator,
|
|
13
|
+
ConstantValidator,
|
|
14
|
+
DateValidator,
|
|
15
|
+
getValidator,
|
|
16
|
+
NumberValidator,
|
|
17
|
+
ObjectValidator,
|
|
18
|
+
OneOfValidator,
|
|
19
|
+
StringValidator,
|
|
20
|
+
TupleValidator,
|
|
21
|
+
Validator
|
|
22
|
+
} from "./index.mjs";
|
|
23
|
+
var generators = /* @__PURE__ */ new Map();
|
|
24
|
+
function registerTypeGenerator(validator, generator) {
|
|
25
|
+
assertSchema(validator.prototype instanceof Validator, "Not a `Validator` class");
|
|
26
|
+
generators.set(validator, generator);
|
|
27
|
+
}
|
|
28
|
+
function generateTypes(validations) {
|
|
29
|
+
const validators = /* @__PURE__ */ new Map();
|
|
30
|
+
const references = /* @__PURE__ */ new Map();
|
|
31
|
+
Object.entries(validations).forEach(([name, validation]) => {
|
|
32
|
+
const validator = getValidator(validation);
|
|
33
|
+
if (!references.has(validator))
|
|
34
|
+
references.set(validator, name);
|
|
35
|
+
validators.set(name, validator);
|
|
36
|
+
});
|
|
37
|
+
const types = [];
|
|
38
|
+
for (const [name, validator] of validators.entries()) {
|
|
39
|
+
const referenceable = new Map(references);
|
|
40
|
+
if (referenceable.get(validator) === name) {
|
|
41
|
+
referenceable.delete(validator);
|
|
42
|
+
}
|
|
43
|
+
const type = generateTypeNode(validator, referenceable);
|
|
44
|
+
const modifiers = [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)];
|
|
45
|
+
const decl = ts.factory.createTypeAliasDeclaration(void 0, modifiers, name, [], type);
|
|
46
|
+
types.push(decl);
|
|
47
|
+
}
|
|
48
|
+
return ts.createPrinter().printList(ts.ListFormat.SourceFileStatements, ts.factory.createNodeArray(types), ts.createSourceFile("types.d.ts", "", ts.ScriptTarget.Latest));
|
|
49
|
+
}
|
|
50
|
+
function generateTypeNode(validator, references) {
|
|
51
|
+
const reference = references.get(validator);
|
|
52
|
+
if (reference)
|
|
53
|
+
return ts.factory.createTypeReferenceNode(reference);
|
|
54
|
+
const generator = generators.get(validator.constructor);
|
|
55
|
+
assertSchema(!!generator, `Type generator for "${validator.constructor.name}" not found`);
|
|
56
|
+
return generator(validator, references);
|
|
57
|
+
}
|
|
58
|
+
var anyType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword);
|
|
59
|
+
var anyArrayType = ts.factory.createArrayTypeNode(anyType);
|
|
60
|
+
var booleanType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.BooleanKeyword);
|
|
61
|
+
var numberType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
|
|
62
|
+
var neverType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword);
|
|
63
|
+
var stringType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword);
|
|
64
|
+
var recordType = ts.factory.createMappedTypeNode(void 0, ts.factory.createTypeParameterDeclaration("key", stringType), void 0, void 0, anyType, void 0);
|
|
65
|
+
var readonlyKeyword = [ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)];
|
|
66
|
+
var optionalKeyword = ts.factory.createToken(ts.SyntaxKind.QuestionToken);
|
|
67
|
+
registerTypeGenerator(AnyValidator, () => anyType);
|
|
68
|
+
registerTypeGenerator(AnyArrayValidator, () => anyArrayType);
|
|
69
|
+
registerTypeGenerator(AnyNumberValidator, () => numberType);
|
|
70
|
+
registerTypeGenerator(AnyObjectValidator, () => recordType);
|
|
71
|
+
registerTypeGenerator(AnyStringValidator, () => stringType);
|
|
72
|
+
registerTypeGenerator(BooleanValidator, () => booleanType);
|
|
73
|
+
registerTypeGenerator(DateValidator, () => ts.factory.createTypeReferenceNode("Date"));
|
|
74
|
+
registerTypeGenerator(ArrayValidator, (validator, references) => {
|
|
75
|
+
const itemType = generateTypeNode(validator.items, references);
|
|
76
|
+
return ts.factory.createArrayTypeNode(itemType);
|
|
77
|
+
});
|
|
78
|
+
registerTypeGenerator(ConstantValidator, (validator) => {
|
|
79
|
+
const literal = typeof validator.constant === "number" ? ts.factory.createNumericLiteral(validator.constant) : typeof validator.constant === "string" ? ts.factory.createStringLiteral(validator.constant) : validator.constant === false ? ts.factory.createFalse() : validator.constant === true ? ts.factory.createTrue() : validator.constant === null ? ts.factory.createNull() : void 0;
|
|
80
|
+
assertSchema(!!literal, `Invalid constant "${validator.constant}"`);
|
|
81
|
+
return ts.factory.createLiteralTypeNode(literal);
|
|
82
|
+
});
|
|
83
|
+
registerTypeGenerator(NumberValidator, (validator) => {
|
|
84
|
+
if (!validator.brand)
|
|
85
|
+
return numberType;
|
|
86
|
+
const signature = ts.factory.createPropertySignature(void 0, `__brand_${validator.brand}`, void 0, neverType);
|
|
87
|
+
const literal = ts.factory.createTypeLiteralNode([signature]);
|
|
88
|
+
return ts.factory.createIntersectionTypeNode([numberType, literal]);
|
|
89
|
+
});
|
|
90
|
+
registerTypeGenerator(StringValidator, (validator) => {
|
|
91
|
+
if (!validator.brand)
|
|
92
|
+
return stringType;
|
|
93
|
+
const signature = ts.factory.createPropertySignature(void 0, `__brand_${validator.brand}`, void 0, neverType);
|
|
94
|
+
const literal = ts.factory.createTypeLiteralNode([signature]);
|
|
95
|
+
return ts.factory.createIntersectionTypeNode([stringType, literal]);
|
|
96
|
+
});
|
|
97
|
+
registerTypeGenerator(TupleValidator, (validator, references) => {
|
|
98
|
+
const members = validator.members;
|
|
99
|
+
const { count, first, next } = members.reduce(({ count: count2, first: first2, next: next2 }, { single }, i) => {
|
|
100
|
+
if (!single) {
|
|
101
|
+
if (i < first2)
|
|
102
|
+
first2 = i;
|
|
103
|
+
next2 = i + 1;
|
|
104
|
+
count2 += 1;
|
|
105
|
+
}
|
|
106
|
+
return { count: count2, first: first2, next: next2 };
|
|
107
|
+
}, { count: 0, first: members.length, next: -1 });
|
|
108
|
+
if (count < 2) {
|
|
109
|
+
const types2 = members.map(({ single, validator: validator2 }) => {
|
|
110
|
+
const memberType = generateTypeNode(validator2, references);
|
|
111
|
+
if (single)
|
|
112
|
+
return generateTypeNode(validator2, references);
|
|
113
|
+
const arrayType = ts.factory.createArrayTypeNode(memberType);
|
|
114
|
+
return ts.factory.createRestTypeNode(arrayType);
|
|
115
|
+
});
|
|
116
|
+
return ts.factory.createTupleTypeNode(types2);
|
|
117
|
+
}
|
|
118
|
+
const before = members.slice(0, first).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
|
|
119
|
+
const types = members.slice(first, next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
|
|
120
|
+
const after = members.slice(next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
|
|
121
|
+
const union = ts.factory.createUnionTypeNode(types);
|
|
122
|
+
const array = ts.factory.createArrayTypeNode(union);
|
|
123
|
+
const rest = ts.factory.createRestTypeNode(array);
|
|
124
|
+
return ts.factory.createTupleTypeNode([...before, rest, ...after]);
|
|
125
|
+
});
|
|
126
|
+
registerTypeGenerator(AllOfValidator, (validator, references) => {
|
|
127
|
+
const members = validator.validators.map((validator2) => generateTypeNode(validator2, references));
|
|
128
|
+
return ts.factory.createIntersectionTypeNode(members);
|
|
129
|
+
});
|
|
130
|
+
registerTypeGenerator(OneOfValidator, (validator, references) => {
|
|
131
|
+
const members = validator.validators.map((validator2) => generateTypeNode(validator2, references));
|
|
132
|
+
return ts.factory.createUnionTypeNode(members);
|
|
133
|
+
});
|
|
134
|
+
registerTypeGenerator(ObjectValidator, (validator, references) => {
|
|
135
|
+
const properties = [];
|
|
136
|
+
for (const [key, property] of validator.properties.entries()) {
|
|
137
|
+
const { validator: validator2, readonly, optional } = property || { optional: true };
|
|
138
|
+
const type = validator2 ? generateTypeNode(validator2, references) : neverType;
|
|
139
|
+
const signature = ts.factory.createPropertySignature(readonly ? readonlyKeyword : void 0, key, optional ? optionalKeyword : void 0, type);
|
|
140
|
+
properties.push(signature);
|
|
141
|
+
}
|
|
142
|
+
if (validator.additionalProperties) {
|
|
143
|
+
const extra = ts.factory.createMappedTypeNode(void 0, ts.factory.createTypeParameterDeclaration("key", stringType), void 0, void 0, generateTypeNode(validator.additionalProperties, references), void 0);
|
|
144
|
+
if (properties.length == 0)
|
|
145
|
+
return extra;
|
|
146
|
+
const type = ts.factory.createTypeLiteralNode(properties);
|
|
147
|
+
return ts.factory.createIntersectionTypeNode([type, extra]);
|
|
148
|
+
} else {
|
|
149
|
+
return ts.factory.createTypeLiteralNode(properties);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
export {
|
|
153
|
+
generateTypes,
|
|
154
|
+
registerTypeGenerator
|
|
155
|
+
};
|
|
156
|
+
//# sourceMappingURL=dts-generator.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/dts-generator.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -36,32 +36,14 @@ var __export = (target, all) => {
|
|
|
36
36
|
for (var name in all)
|
|
37
37
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
38
38
|
};
|
|
39
|
-
var __publicField = (obj, key, value) => {
|
|
40
|
-
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
41
|
-
return value;
|
|
42
|
-
};
|
|
43
|
-
var __accessCheck = (obj, member, msg) => {
|
|
44
|
-
if (!member.has(obj))
|
|
45
|
-
throw TypeError("Cannot " + msg);
|
|
46
|
-
};
|
|
47
|
-
var __privateGet = (obj, member, getter) => {
|
|
48
|
-
__accessCheck(obj, member, "read from private field");
|
|
49
|
-
return getter ? getter.call(obj) : member.get(obj);
|
|
50
|
-
};
|
|
51
|
-
var __privateAdd = (obj, member, value) => {
|
|
52
|
-
if (member.has(obj))
|
|
53
|
-
throw TypeError("Cannot add the same private member more than once");
|
|
54
|
-
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
55
|
-
};
|
|
56
|
-
var __privateSet = (obj, member, value, setter) => {
|
|
57
|
-
__accessCheck(obj, member, "write to private field");
|
|
58
|
-
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
59
|
-
return value;
|
|
60
|
-
};
|
|
61
39
|
|
|
62
40
|
// src/index.ts
|
|
63
41
|
__export(exports, {
|
|
64
42
|
AllOfValidator: () => AllOfValidator,
|
|
43
|
+
AnyArrayValidator: () => AnyArrayValidator,
|
|
44
|
+
AnyNumberValidator: () => AnyNumberValidator,
|
|
45
|
+
AnyObjectValidator: () => AnyObjectValidator,
|
|
46
|
+
AnyStringValidator: () => AnyStringValidator,
|
|
65
47
|
AnyValidator: () => AnyValidator,
|
|
66
48
|
ArrayValidator: () => ArrayValidator,
|
|
67
49
|
BooleanValidator: () => BooleanValidator,
|
|
@@ -203,24 +185,26 @@ var nullValidator = new ConstantValidator(null);
|
|
|
203
185
|
|
|
204
186
|
// src/validators/tuple.ts
|
|
205
187
|
var TupleValidator = class extends Validator {
|
|
188
|
+
members;
|
|
206
189
|
tuple;
|
|
207
|
-
#validators = [];
|
|
208
190
|
constructor(tuple2) {
|
|
209
191
|
super();
|
|
210
|
-
|
|
192
|
+
const members = [];
|
|
211
193
|
for (const item of tuple2) {
|
|
212
194
|
if (item === null) {
|
|
213
|
-
|
|
195
|
+
members.push({ single: true, validator: nullValidator });
|
|
214
196
|
} else if (typeof item === "object" && restValidator in item) {
|
|
215
|
-
|
|
197
|
+
members.push({ single: false, validator: item[restValidator] });
|
|
216
198
|
} else {
|
|
217
|
-
|
|
199
|
+
members.push({ single: true, validator: getValidator(item) });
|
|
218
200
|
}
|
|
219
201
|
}
|
|
202
|
+
this.members = members;
|
|
203
|
+
this.tuple = tuple2;
|
|
220
204
|
}
|
|
221
205
|
validate(value, options) {
|
|
222
206
|
assertValidation(Array.isArray(value), 'Value is not an "array"');
|
|
223
|
-
if (this
|
|
207
|
+
if (this.members.length === 0) {
|
|
224
208
|
const size = value.length;
|
|
225
209
|
assertValidation(size === 0, `Found ${size} element${size === 1 ? "" : "s"} validating empty tuple`);
|
|
226
210
|
return value;
|
|
@@ -228,24 +212,24 @@ var TupleValidator = class extends Validator {
|
|
|
228
212
|
const clone = new Array(value.length);
|
|
229
213
|
let needle = 0;
|
|
230
214
|
let haystack = 0;
|
|
231
|
-
let { single, validator } = this
|
|
232
|
-
while (needle < this
|
|
215
|
+
let { single, validator } = this.members[needle];
|
|
216
|
+
while (needle < this.members.length && haystack < value.length) {
|
|
233
217
|
try {
|
|
234
218
|
clone[haystack] = validator.validate(value[haystack], options);
|
|
235
219
|
if (single)
|
|
236
|
-
({ single, validator } = this
|
|
220
|
+
({ single, validator } = this.members[++needle] || {});
|
|
237
221
|
haystack++;
|
|
238
222
|
} catch (error) {
|
|
239
223
|
if (single)
|
|
240
224
|
throw new ValidationError(error, [haystack]);
|
|
241
225
|
else
|
|
242
|
-
({ single, validator } = this
|
|
226
|
+
({ single, validator } = this.members[++needle] || {});
|
|
243
227
|
}
|
|
244
228
|
}
|
|
245
|
-
while (needle < this
|
|
229
|
+
while (needle < this.members.length && this.members[needle].single === false) {
|
|
246
230
|
needle++;
|
|
247
231
|
}
|
|
248
|
-
const missing = this
|
|
232
|
+
const missing = this.members.length - needle;
|
|
249
233
|
if (missing === 1 && single) {
|
|
250
234
|
throw new ValidationError("Tuple defines 1 missing validation");
|
|
251
235
|
} else if (missing > 1) {
|
|
@@ -268,26 +252,35 @@ function makeTupleRestIterable(create) {
|
|
|
268
252
|
}
|
|
269
253
|
|
|
270
254
|
// src/validators/object.ts
|
|
255
|
+
var AnyObjectValidator = class extends Validator {
|
|
256
|
+
validate(value) {
|
|
257
|
+
assertValidation(typeof value == "object", 'Value is not an "object"');
|
|
258
|
+
assertValidation(value !== null, 'Value is "null"');
|
|
259
|
+
return value;
|
|
260
|
+
}
|
|
261
|
+
};
|
|
271
262
|
var ObjectValidator = class extends Validator {
|
|
272
263
|
schema;
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
#optionalProperties = {};
|
|
276
|
-
#neverProperties = /* @__PURE__ */ new Set();
|
|
264
|
+
properties = /* @__PURE__ */ new Map();
|
|
265
|
+
additionalProperties;
|
|
277
266
|
constructor(schema) {
|
|
278
267
|
super();
|
|
279
268
|
var _a;
|
|
280
269
|
const _b = schema, { [_a = additionalValidator]: additional } = _b, properties = __objRest(_b, [__restKey(_a)]);
|
|
281
270
|
if (additional)
|
|
282
|
-
this
|
|
271
|
+
this.additionalProperties = getValidator(additional);
|
|
283
272
|
for (const key of Object.keys(properties)) {
|
|
284
273
|
const definition = properties[key];
|
|
285
274
|
if (definition === never) {
|
|
286
|
-
this
|
|
275
|
+
this.properties.set(key, void 0);
|
|
287
276
|
} else if (isModifier(definition)) {
|
|
288
|
-
(
|
|
277
|
+
this.properties.set(key, {
|
|
278
|
+
validator: definition[modifierValidator],
|
|
279
|
+
readonly: definition.readonly,
|
|
280
|
+
optional: definition.optional
|
|
281
|
+
});
|
|
289
282
|
} else {
|
|
290
|
-
this
|
|
283
|
+
this.properties.set(key, { validator: getValidator(definition) });
|
|
291
284
|
}
|
|
292
285
|
}
|
|
293
286
|
this.schema = schema;
|
|
@@ -298,43 +291,29 @@ var ObjectValidator = class extends Validator {
|
|
|
298
291
|
const record = value;
|
|
299
292
|
const builder = new ValidationErrorBuilder();
|
|
300
293
|
const clone = {};
|
|
301
|
-
for (const [key,
|
|
302
|
-
|
|
303
|
-
|
|
294
|
+
for (const [key, property] of this.properties.entries()) {
|
|
295
|
+
const { validator, optional: optional2 } = property || {};
|
|
296
|
+
if (!validator) {
|
|
297
|
+
if (record[key] === void 0)
|
|
298
|
+
continue;
|
|
299
|
+
if (options.stripForbiddenProperties)
|
|
300
|
+
continue;
|
|
301
|
+
builder.record("Forbidden property", key);
|
|
304
302
|
continue;
|
|
305
303
|
}
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
builder.record(error, key);
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
for (const [key, validator] of Object.entries(this.#optionalProperties)) {
|
|
313
|
-
if (record[key] === void 0)
|
|
304
|
+
if (record[key] === void 0) {
|
|
305
|
+
if (!optional2)
|
|
306
|
+
builder.record("Required property missing", key);
|
|
314
307
|
continue;
|
|
308
|
+
}
|
|
315
309
|
try {
|
|
316
310
|
clone[key] = validator.validate(record[key], options);
|
|
317
311
|
} catch (error) {
|
|
318
312
|
builder.record(error, key);
|
|
319
313
|
}
|
|
320
314
|
}
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
continue;
|
|
324
|
-
if (options.stripForbiddenProperties)
|
|
325
|
-
continue;
|
|
326
|
-
builder.record("Forbidden property", key);
|
|
327
|
-
}
|
|
328
|
-
const additional = this.#additionalProperties;
|
|
329
|
-
const additionalKeys = Object.keys(record).filter((k) => {
|
|
330
|
-
if (k in this.#requiredProperties)
|
|
331
|
-
return false;
|
|
332
|
-
if (k in this.#optionalProperties)
|
|
333
|
-
return false;
|
|
334
|
-
if (this.#neverProperties.has(k))
|
|
335
|
-
return false;
|
|
336
|
-
return true;
|
|
337
|
-
});
|
|
315
|
+
const additionalKeys = Object.keys(record).filter((k) => !this.properties.has(k));
|
|
316
|
+
const additional = this.additionalProperties;
|
|
338
317
|
if (additional) {
|
|
339
318
|
additionalKeys.forEach((key) => {
|
|
340
319
|
if (record[key] === void 0)
|
|
@@ -354,19 +333,17 @@ var ObjectValidator = class extends Validator {
|
|
|
354
333
|
return builder.assert(clone);
|
|
355
334
|
}
|
|
356
335
|
};
|
|
357
|
-
var anyObjectValidator = new
|
|
358
|
-
validate(value) {
|
|
359
|
-
assertValidation(typeof value == "object", 'Value is not an "object"');
|
|
360
|
-
assertValidation(value !== null, 'Value is "null"');
|
|
361
|
-
return value;
|
|
362
|
-
}
|
|
363
|
-
}();
|
|
336
|
+
var anyObjectValidator = new AnyObjectValidator();
|
|
364
337
|
function _object(schema) {
|
|
365
338
|
if (!schema)
|
|
366
339
|
return anyObjectValidator;
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
340
|
+
const validator = new ObjectValidator(schema);
|
|
341
|
+
function* iterator() {
|
|
342
|
+
yield { [restValidator]: validator };
|
|
343
|
+
}
|
|
344
|
+
return Object.defineProperties(schema, {
|
|
345
|
+
[schemaValidator]: { value: validator, enumerable: false },
|
|
346
|
+
[Symbol.iterator]: { value: iterator, enumerable: false }
|
|
370
347
|
});
|
|
371
348
|
}
|
|
372
349
|
var object = makeTupleRestIterable(_object);
|
|
@@ -461,6 +438,13 @@ function allOf(...args) {
|
|
|
461
438
|
}
|
|
462
439
|
|
|
463
440
|
// src/validators/array.ts
|
|
441
|
+
var AnyArrayValidator = class extends Validator {
|
|
442
|
+
validate(value, options) {
|
|
443
|
+
void 0;
|
|
444
|
+
assertValidation(Array.isArray(value), 'Value is not an "array"');
|
|
445
|
+
return [...value];
|
|
446
|
+
}
|
|
447
|
+
};
|
|
464
448
|
var ArrayValidator = class extends Validator {
|
|
465
449
|
maxItems;
|
|
466
450
|
minItems;
|
|
@@ -505,12 +489,7 @@ var ArrayValidator = class extends Validator {
|
|
|
505
489
|
return builder.assert(clone);
|
|
506
490
|
}
|
|
507
491
|
};
|
|
508
|
-
var anyArrayValidator = new
|
|
509
|
-
validate(value) {
|
|
510
|
-
assertValidation(Array.isArray(value), 'Value is not an "array"');
|
|
511
|
-
return value;
|
|
512
|
-
}
|
|
513
|
-
}();
|
|
492
|
+
var anyArrayValidator = new AnyArrayValidator();
|
|
514
493
|
function _array(options) {
|
|
515
494
|
if (!options)
|
|
516
495
|
return anyArrayValidator;
|
|
@@ -578,17 +557,33 @@ function _date(constraints) {
|
|
|
578
557
|
var date = makeTupleRestIterable(_date);
|
|
579
558
|
|
|
580
559
|
// src/validators/number.ts
|
|
581
|
-
var
|
|
582
|
-
var
|
|
560
|
+
var PRECISION = 6;
|
|
561
|
+
var MULTIPLIER = Math.pow(10, PRECISION);
|
|
562
|
+
function countDecimals(n) {
|
|
563
|
+
const match = n.toExponential().match(/^\d+(\.\d+)?e([+-]\d+)$/);
|
|
564
|
+
if (!match)
|
|
565
|
+
throw new RangeError(`Can't calculate digits for number "${n}"`);
|
|
566
|
+
const digits = (match[1] || ".").length - 1 - parseInt(match[2]);
|
|
567
|
+
return digits < 0 ? 0 : digits;
|
|
568
|
+
}
|
|
569
|
+
var AnyNumberValidator = class extends Validator {
|
|
570
|
+
validate(value) {
|
|
571
|
+
assertValidation(typeof value == "number", 'Value is not a "number"');
|
|
572
|
+
assertValidation(!isNaN(value), 'Number is "NaN"');
|
|
573
|
+
return value;
|
|
574
|
+
}
|
|
575
|
+
};
|
|
576
|
+
var NumberValidator = class extends Validator {
|
|
577
|
+
#isMultipleOf;
|
|
578
|
+
allowNaN;
|
|
579
|
+
exclusiveMaximum;
|
|
580
|
+
exclusiveMinimum;
|
|
581
|
+
maximum;
|
|
582
|
+
minimum;
|
|
583
|
+
multipleOf;
|
|
584
|
+
brand;
|
|
583
585
|
constructor(constraints = {}) {
|
|
584
586
|
super();
|
|
585
|
-
__privateAdd(this, _isMultipleOf, void 0);
|
|
586
|
-
__publicField(this, "allowNaN");
|
|
587
|
-
__publicField(this, "exclusiveMaximum");
|
|
588
|
-
__publicField(this, "exclusiveMinimum");
|
|
589
|
-
__publicField(this, "maximum");
|
|
590
|
-
__publicField(this, "minimum");
|
|
591
|
-
__publicField(this, "multipleOf");
|
|
592
587
|
const {
|
|
593
588
|
allowNaN = false,
|
|
594
589
|
exclusiveMaximum,
|
|
@@ -597,6 +592,8 @@ var _NumberValidator = class extends Validator {
|
|
|
597
592
|
minimum = Number.NEGATIVE_INFINITY,
|
|
598
593
|
multipleOf
|
|
599
594
|
} = constraints;
|
|
595
|
+
if ("brand" in constraints)
|
|
596
|
+
this.brand = constraints.brand;
|
|
600
597
|
assertSchema(maximum >= minimum, `Constraint "minimum" (${minimum}) is greater than "maximum" (${maximum})`);
|
|
601
598
|
if (exclusiveMaximum !== void 0) {
|
|
602
599
|
assertSchema(exclusiveMaximum > minimum, `Constraint "exclusiveMaximum" (${exclusiveMaximum}) must be greater than "minimum" (${minimum})`);
|
|
@@ -609,13 +606,19 @@ var _NumberValidator = class extends Validator {
|
|
|
609
606
|
}
|
|
610
607
|
if (multipleOf !== void 0) {
|
|
611
608
|
assertSchema(multipleOf > 0, `Constraint "multipleOf" (${multipleOf}) must be greater than zero`);
|
|
612
|
-
const
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
if (
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
609
|
+
const decimals = countDecimals(multipleOf);
|
|
610
|
+
if (decimals === 0) {
|
|
611
|
+
this.#isMultipleOf = (value) => !(value % multipleOf);
|
|
612
|
+
} else if (decimals <= PRECISION) {
|
|
613
|
+
this.#isMultipleOf = (value) => {
|
|
614
|
+
try {
|
|
615
|
+
if (countDecimals(value) > PRECISION)
|
|
616
|
+
return false;
|
|
617
|
+
return !(value * MULTIPLIER % (multipleOf * MULTIPLIER));
|
|
618
|
+
} catch (error) {
|
|
619
|
+
throw new ValidationError(error.message);
|
|
620
|
+
}
|
|
621
|
+
};
|
|
619
622
|
} else {
|
|
620
623
|
assertSchema(false, `Constraint "multipleOf" (${multipleOf}) requires too much precision`);
|
|
621
624
|
}
|
|
@@ -637,30 +640,28 @@ var _NumberValidator = class extends Validator {
|
|
|
637
640
|
assertValidation(value <= this.maximum, `Number is greater than ${this.maximum}`);
|
|
638
641
|
assertValidation(this.exclusiveMinimum == void 0 || value > this.exclusiveMinimum, `Number is less than or equal to ${this.exclusiveMinimum}`);
|
|
639
642
|
assertValidation(this.exclusiveMaximum == void 0 || value < this.exclusiveMaximum, `Number is greater than or equal to ${this.exclusiveMaximum}`);
|
|
640
|
-
assertValidation(
|
|
643
|
+
assertValidation(this.#isMultipleOf ? this.#isMultipleOf(value) : true, `Number is not a multiple of ${this.multipleOf}`);
|
|
641
644
|
return value;
|
|
642
645
|
}
|
|
643
646
|
};
|
|
644
|
-
var
|
|
645
|
-
_isMultipleOf = new WeakMap();
|
|
646
|
-
__publicField(NumberValidator, "PRECISION", 1e6);
|
|
647
|
-
var anyNumberValidator = new class extends Validator {
|
|
648
|
-
validate(value) {
|
|
649
|
-
assertValidation(typeof value == "number", 'Value is not a "number"');
|
|
650
|
-
assertValidation(!isNaN(value), 'Number is "NaN"');
|
|
651
|
-
return value;
|
|
652
|
-
}
|
|
653
|
-
}();
|
|
647
|
+
var anyNumberValidator = new AnyNumberValidator();
|
|
654
648
|
function _number(constraints) {
|
|
655
649
|
return constraints ? new NumberValidator(constraints) : anyNumberValidator;
|
|
656
650
|
}
|
|
657
651
|
var number = makeTupleRestIterable(_number);
|
|
658
652
|
|
|
659
653
|
// src/validators/string.ts
|
|
654
|
+
var AnyStringValidator = class extends Validator {
|
|
655
|
+
validate(value) {
|
|
656
|
+
assertValidation(typeof value == "string", 'Value is not a "string"');
|
|
657
|
+
return value;
|
|
658
|
+
}
|
|
659
|
+
};
|
|
660
660
|
var StringValidator = class extends Validator {
|
|
661
661
|
maxLength;
|
|
662
662
|
minLength;
|
|
663
663
|
pattern;
|
|
664
|
+
brand;
|
|
664
665
|
constructor(constraints = {}) {
|
|
665
666
|
super();
|
|
666
667
|
const {
|
|
@@ -668,6 +669,8 @@ var StringValidator = class extends Validator {
|
|
|
668
669
|
maxLength = Number.MAX_SAFE_INTEGER,
|
|
669
670
|
pattern
|
|
670
671
|
} = constraints;
|
|
672
|
+
if ("brand" in constraints)
|
|
673
|
+
this.brand = constraints.brand;
|
|
671
674
|
assertSchema(minLength >= 0, `Constraint "minLength" (${minLength}) must be non-negative`);
|
|
672
675
|
assertSchema(maxLength >= 0, `Constraint "maxLength" (${maxLength}) must be non-negative`);
|
|
673
676
|
assertSchema(minLength <= maxLength, `Constraint "minLength" (${minLength}) is greater than "maxLength" (${maxLength})`);
|
|
@@ -683,12 +686,7 @@ var StringValidator = class extends Validator {
|
|
|
683
686
|
return value;
|
|
684
687
|
}
|
|
685
688
|
};
|
|
686
|
-
var anyStringValidator = new
|
|
687
|
-
validate(value) {
|
|
688
|
-
assertValidation(typeof value == "string", 'Value is not a "string"');
|
|
689
|
-
return value;
|
|
690
|
-
}
|
|
691
|
-
}();
|
|
689
|
+
var anyStringValidator = new AnyStringValidator();
|
|
692
690
|
function _string(constraints) {
|
|
693
691
|
return constraints ? new StringValidator(constraints) : anyStringValidator;
|
|
694
692
|
}
|
|
@@ -705,6 +703,10 @@ function validate(validation, value, options = {}) {
|
|
|
705
703
|
// Annotate the CommonJS export names for ESM import in node:
|
|
706
704
|
0 && (module.exports = {
|
|
707
705
|
AllOfValidator,
|
|
706
|
+
AnyArrayValidator,
|
|
707
|
+
AnyNumberValidator,
|
|
708
|
+
AnyObjectValidator,
|
|
709
|
+
AnyStringValidator,
|
|
708
710
|
AnyValidator,
|
|
709
711
|
ArrayValidator,
|
|
710
712
|
BooleanValidator,
|
|
@@ -744,4 +746,4 @@ function validate(validation, value, options = {}) {
|
|
|
744
746
|
tuple,
|
|
745
747
|
validate
|
|
746
748
|
});
|
|
747
|
-
//# sourceMappingURL=index.
|
|
749
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/index.ts", "../src/errors.ts", "../src/types.ts", "../src/validators/any.ts", "../src/validators/constant.ts", "../src/validators/tuple.ts", "../src/validators/object.ts", "../src/utilities.ts", "../src/schema.ts", "../src/validators/union.ts", "../src/validators/array.ts", "../src/validators/boolean.ts", "../src/validators/date.ts", "../src/validators/number.ts", "../src/validators/string.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|