valgen 3.2.0 → 4.0.0-alpha.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/CHANGELOG.md +6 -0
- package/README.md +12 -7
- package/cjs/core/constants.js +5 -0
- package/cjs/core/context.js +65 -0
- package/cjs/core/index.js +21 -0
- package/cjs/core/types.js +2 -0
- package/cjs/core/validation-error.js +11 -0
- package/cjs/core/validator.js +61 -0
- package/cjs/helpers/object.utils.js +19 -0
- package/cjs/helpers/string.utils.js +9 -0
- package/cjs/index.js +18 -0
- package/cjs/package.json +3 -0
- package/cjs/rules/index.js +38 -0
- package/cjs/rules/is-any.js +12 -0
- package/cjs/rules/is-array.js +38 -0
- package/cjs/rules/is-boolean.js +30 -0
- package/cjs/rules/is-date.js +63 -0
- package/cjs/rules/is-empty.js +68 -0
- package/cjs/rules/is-enum.js +30 -0
- package/cjs/rules/is-integer.js +26 -0
- package/cjs/rules/is-matches.js +24 -0
- package/cjs/rules/is-null.js +40 -0
- package/cjs/rules/is-number.js +26 -0
- package/cjs/rules/is-object-id.js +28 -0
- package/cjs/rules/is-object.js +103 -0
- package/cjs/rules/is-record.js +41 -0
- package/cjs/rules/is-string.js +79 -0
- package/cjs/rules/is-tuple.js +32 -0
- package/cjs/rules/length.js +41 -0
- package/cjs/rules/optional.js +44 -0
- package/cjs/rules/pipe.js +43 -0
- package/cjs/rules/range.js +89 -0
- package/cjs/rules/string-formats.js +296 -0
- package/cjs/rules/union.js +31 -0
- package/cjs/rules/utilities.js +31 -0
- package/esm/core/constants.js +2 -0
- package/esm/core/context.js +61 -0
- package/esm/core/index.js +5 -0
- package/esm/core/types.js +1 -0
- package/esm/core/validation-error.js +7 -0
- package/esm/core/validator.js +56 -0
- package/esm/helpers/object.utils.js +14 -0
- package/esm/helpers/string.utils.js +5 -0
- package/esm/index.js +2 -0
- package/esm/rules/index.js +22 -0
- package/esm/rules/is-any.js +8 -0
- package/esm/rules/is-array.js +34 -0
- package/esm/rules/is-boolean.js +26 -0
- package/esm/rules/is-date.js +55 -0
- package/esm/rules/is-empty.js +63 -0
- package/esm/rules/is-enum.js +26 -0
- package/esm/rules/is-integer.js +22 -0
- package/esm/rules/is-matches.js +20 -0
- package/esm/rules/is-null.js +34 -0
- package/esm/rules/is-number.js +22 -0
- package/esm/rules/is-object-id.js +21 -0
- package/esm/rules/is-object.js +99 -0
- package/esm/rules/is-record.js +37 -0
- package/esm/rules/is-string.js +70 -0
- package/esm/rules/is-tuple.js +28 -0
- package/esm/rules/length.js +35 -0
- package/esm/rules/optional.js +38 -0
- package/esm/rules/pipe.js +38 -0
- package/esm/rules/range.js +81 -0
- package/esm/rules/string-formats.js +266 -0
- package/esm/rules/union.js +27 -0
- package/esm/rules/utilities.js +26 -0
- package/package.json +33 -37
- package/typings/core/constants.d.ts +2 -0
- package/typings/core/context.d.ts +26 -0
- package/typings/core/index.d.ts +6 -0
- package/typings/core/types.d.ts +18 -0
- package/typings/core/validation-error.d.ts +5 -0
- package/typings/core/validator.d.ts +18 -0
- package/typings/helpers/object.utils.d.ts +2 -0
- package/typings/helpers/string.utils.d.ts +1 -0
- package/typings/index.d.ts +2 -0
- package/typings/rules/index.d.ts +22 -0
- package/typings/rules/is-any.d.ts +5 -0
- package/typings/rules/is-array.d.ts +7 -0
- package/typings/rules/is-boolean.d.ts +7 -0
- package/typings/rules/is-date.d.ts +19 -0
- package/typings/rules/is-empty.d.ts +13 -0
- package/typings/rules/is-enum.d.ts +9 -0
- package/typings/rules/is-integer.d.ts +7 -0
- package/typings/rules/is-matches.d.ts +9 -0
- package/typings/rules/is-null.d.ts +16 -0
- package/typings/rules/is-number.d.ts +7 -0
- package/typings/rules/is-object-id.d.ts +10 -0
- package/typings/rules/is-object.d.ts +22 -0
- package/typings/rules/is-record.d.ts +7 -0
- package/typings/rules/is-string.d.ts +42 -0
- package/typings/rules/is-tuple.d.ts +27 -0
- package/typings/rules/length.d.ts +21 -0
- package/typings/rules/optional.d.ts +17 -0
- package/typings/rules/pipe.d.ts +11 -0
- package/typings/rules/range.d.ts +48 -0
- package/typings/rules/string-formats.d.ts +140 -0
- package/typings/rules/union.d.ts +5 -0
- package/typings/rules/utilities.d.ts +11 -0
- package/lib/ArrayType.d.ts +0 -5
- package/lib/ArrayType.js +0 -43
- package/lib/DataType.d.ts +0 -25
- package/lib/DataType.js +0 -214
- package/lib/ObjectType.d.ts +0 -5
- package/lib/ObjectType.js +0 -78
- package/lib/SchemaError.d.ts +0 -3
- package/lib/SchemaError.js +0 -17
- package/lib/UnionType.d.ts +0 -5
- package/lib/UnionType.js +0 -54
- package/lib/Valgen.d.ts +0 -88
- package/lib/Valgen.js +0 -289
- package/lib/ValidationError.d.ts +0 -2
- package/lib/ValidationError.js +0 -4
- package/lib/factories/AnyFactory.d.ts +0 -28
- package/lib/factories/AnyFactory.js +0 -73
- package/lib/factories/ArrayFactory.d.ts +0 -16
- package/lib/factories/ArrayFactory.js +0 -148
- package/lib/factories/Base64Factory.d.ts +0 -12
- package/lib/factories/Base64Factory.js +0 -31
- package/lib/factories/BooleanFactory.d.ts +0 -12
- package/lib/factories/BooleanFactory.js +0 -49
- package/lib/factories/DateFactory.d.ts +0 -40
- package/lib/factories/DateFactory.js +0 -239
- package/lib/factories/FunctionFactory.d.ts +0 -12
- package/lib/factories/FunctionFactory.js +0 -28
- package/lib/factories/IntegerFactory.d.ts +0 -14
- package/lib/factories/IntegerFactory.js +0 -33
- package/lib/factories/NilFactory.d.ts +0 -4
- package/lib/factories/NilFactory.js +0 -20
- package/lib/factories/NumberFactory.d.ts +0 -36
- package/lib/factories/NumberFactory.js +0 -178
- package/lib/factories/ObjectFactory.d.ts +0 -38
- package/lib/factories/ObjectFactory.js +0 -326
- package/lib/factories/StringFactory.d.ts +0 -16
- package/lib/factories/StringFactory.js +0 -94
- package/lib/factories/UnionFactory.d.ts +0 -13
- package/lib/factories/UnionFactory.js +0 -62
- package/lib/index.d.ts +0 -19
- package/lib/index.js +0 -37
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
const {AnyFactory} = require('./AnyFactory');
|
|
3
|
-
|
|
4
|
-
class UnionFactory extends AnyFactory {
|
|
5
|
-
|
|
6
|
-
normalizeCompileOptions(options) {
|
|
7
|
-
return options;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
normalizeAttribute(attr, v) {
|
|
11
|
-
switch (attr) {
|
|
12
|
-
case 'anyOf':
|
|
13
|
-
if (v && !Array.isArray(v))
|
|
14
|
-
throw new TypeError('Value must be an array');
|
|
15
|
-
if (v && v.length < 2)
|
|
16
|
-
throw new TypeError('Value must contain at least 2 items');
|
|
17
|
-
return v;
|
|
18
|
-
default:
|
|
19
|
-
return v;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
_generateValidationCode(dataType, options) {
|
|
24
|
-
const data = super._generateValidationCode(dataType, options);
|
|
25
|
-
const anyOf = dataType.get('anyOf');
|
|
26
|
-
data.variables.subValidators =
|
|
27
|
-
anyOf.map(t => t.generate(options));
|
|
28
|
-
|
|
29
|
-
data.code += `
|
|
30
|
-
const len = subValidators.length;
|
|
31
|
-
let bestFn;
|
|
32
|
-
let bestRank = 0;
|
|
33
|
-
for (let i = 0; i < len; i++) {
|
|
34
|
-
const fn = subValidators[i];
|
|
35
|
-
let rank = fn(value, {...ctx, typeCheck: true});
|
|
36
|
-
if (!rank.valid)
|
|
37
|
-
continue;
|
|
38
|
-
rank = rank.value;
|
|
39
|
-
if (rank === undefined || rank > bestRank) {
|
|
40
|
-
bestFn = fn;
|
|
41
|
-
if (rank === 1 || rank === undefined)
|
|
42
|
-
break;
|
|
43
|
-
bestRank = rank;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
if (!bestFn) {
|
|
48
|
-
return ctx.logError({
|
|
49
|
-
message: 'Value does not match any of expected types.',
|
|
50
|
-
errorType: 'no-type-matched'
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
const vv = bestFn(value, ctx);
|
|
54
|
-
if (vv.valid)
|
|
55
|
-
return vv.value;
|
|
56
|
-
`;
|
|
57
|
-
return data;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
module.exports = {UnionFactory};
|
package/lib/index.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import {Valgen} from './Valgen';
|
|
2
|
-
export function vg(options?: Valgen.IOptions): Valgen;
|
|
3
|
-
export default vg;
|
|
4
|
-
|
|
5
|
-
export * from './Valgen';
|
|
6
|
-
export * from './factories/AnyFactory';
|
|
7
|
-
export * from './factories/ArrayFactory';
|
|
8
|
-
export * from './factories/BooleanFactory';
|
|
9
|
-
export * from './factories/DateFactory';
|
|
10
|
-
export * from './factories/IntegerFactory';
|
|
11
|
-
export * from './factories/NilFactory';
|
|
12
|
-
export * from './factories/NumberFactory';
|
|
13
|
-
export * from './factories/ObjectFactory';
|
|
14
|
-
export * from './factories/StringFactory';
|
|
15
|
-
export * from './factories/UnionFactory';
|
|
16
|
-
export * from './factories/FunctionFactory';
|
|
17
|
-
export * from './factories/Base64Factory';
|
|
18
|
-
|
|
19
|
-
declare module "vg";
|
package/lib/index.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
const {Valgen} = require('./Valgen');
|
|
2
|
-
const {AnyFactory} = require('./factories/AnyFactory');
|
|
3
|
-
const {ArrayFactory} = require('./factories/ArrayFactory');
|
|
4
|
-
const {BooleanFactory} = require('./factories/BooleanFactory');
|
|
5
|
-
const {DateFactory} = require('./factories/DateFactory');
|
|
6
|
-
const {IntegerFactory} = require('./factories/IntegerFactory');
|
|
7
|
-
const {NilFactory} = require('./factories/NilFactory');
|
|
8
|
-
const {NumberFactory} = require('./factories/NumberFactory');
|
|
9
|
-
const {ObjectFactory} = require('./factories/ObjectFactory');
|
|
10
|
-
const {StringFactory} = require('./factories/StringFactory');
|
|
11
|
-
const {UnionFactory} = require('./factories/UnionFactory');
|
|
12
|
-
const {Base64Factory} = require('./factories/Base64Factory');
|
|
13
|
-
const {FunctionFactory} = require('./factories/FunctionFactory');
|
|
14
|
-
|
|
15
|
-
function vg(options) {
|
|
16
|
-
return new Valgen(options);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
module.exports = vg;
|
|
20
|
-
module.exports.__esModule = true;
|
|
21
|
-
module.exports.default = vg;
|
|
22
|
-
|
|
23
|
-
Object.assign(vg, {
|
|
24
|
-
Valgen,
|
|
25
|
-
AnyFactory,
|
|
26
|
-
ArrayFactory,
|
|
27
|
-
BooleanFactory,
|
|
28
|
-
DateFactory,
|
|
29
|
-
IntegerFactory,
|
|
30
|
-
NilFactory,
|
|
31
|
-
NumberFactory,
|
|
32
|
-
ObjectFactory,
|
|
33
|
-
StringFactory,
|
|
34
|
-
UnionFactory,
|
|
35
|
-
Base64Factory,
|
|
36
|
-
FunctionFactory
|
|
37
|
-
});
|