@local901/validator 0.0.3
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/Validator.d.ts +35 -0
- package/Validator.js +43 -0
- package/Validator.js.map +1 -0
- package/errors/ErrorType.d.ts +14 -0
- package/errors/ErrorType.js +16 -0
- package/errors/ErrorType.js.map +1 -0
- package/errors/ValidationError.d.ts +10 -0
- package/errors/ValidationError.js +16 -0
- package/errors/ValidationError.js.map +1 -0
- package/index.d.ts +19 -0
- package/index.js +23 -0
- package/index.js.map +1 -0
- package/package.json +28 -0
- package/types/bool/BooleanValidator.d.ts +9 -0
- package/types/bool/BooleanValidator.js +17 -0
- package/types/bool/BooleanValidator.js.map +1 -0
- package/types/number/IntValidator.d.ts +15 -0
- package/types/number/IntValidator.js +31 -0
- package/types/number/IntValidator.js.map +1 -0
- package/types/number/NumberValidator.d.ts +19 -0
- package/types/number/NumberValidator.js +31 -0
- package/types/number/NumberValidator.js.map +1 -0
- package/types/object/ObjectValidator.d.ts +12 -0
- package/types/object/ObjectValidator.js +42 -0
- package/types/object/ObjectValidator.js.map +1 -0
- package/types/string/StringValidator.d.ts +19 -0
- package/types/string/StringValidator.js +42 -0
- package/types/string/StringValidator.js.map +1 -0
- package/types/util/AnyOfValidator.d.ts +9 -0
- package/types/util/AnyOfValidator.js +27 -0
- package/types/util/AnyOfValidator.js.map +1 -0
- package/types/util/AnyValidator.d.ts +7 -0
- package/types/util/AnyValidator.js +13 -0
- package/types/util/AnyValidator.js.map +1 -0
- package/types/util/OptionalValidator.d.ts +9 -0
- package/types/util/OptionalValidator.js +21 -0
- package/types/util/OptionalValidator.js.map +1 -0
package/Validator.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ErrorValue } from "./errors/ErrorType";
|
|
2
|
+
import { ErrorFields, ValidationError } from "./errors/ValidationError";
|
|
3
|
+
export declare abstract class Validator<T = unknown> {
|
|
4
|
+
abstract type: string;
|
|
5
|
+
protected createError(error: ErrorValue, message: string, fields?: ErrorFields<T>): ValidationError<T>;
|
|
6
|
+
/**
|
|
7
|
+
* Validate input.
|
|
8
|
+
*
|
|
9
|
+
* @param input Input value to validate.
|
|
10
|
+
* @returns An error if validation failed. Null when type is correct.
|
|
11
|
+
*/
|
|
12
|
+
abstract validateReturn(input: unknown): ValidationError<T> | null;
|
|
13
|
+
/**
|
|
14
|
+
* Validate input.
|
|
15
|
+
*
|
|
16
|
+
* @param input Input value to validate.
|
|
17
|
+
* @returns True when input is valid, else False.
|
|
18
|
+
*/
|
|
19
|
+
validate(input: unknown): input is T;
|
|
20
|
+
/**
|
|
21
|
+
* Validate input.
|
|
22
|
+
*
|
|
23
|
+
* @param input Input value to validate.
|
|
24
|
+
* @throws ValidationError When input is invalid.
|
|
25
|
+
*/
|
|
26
|
+
validateOrThrow(input: unknown): asserts input is T;
|
|
27
|
+
/**
|
|
28
|
+
* Type narrow input using the validation result.
|
|
29
|
+
*
|
|
30
|
+
* @param _input Input that was validated.
|
|
31
|
+
* @param result Result from the validation.
|
|
32
|
+
* @returns True if the result says the input was valid.
|
|
33
|
+
*/
|
|
34
|
+
validateResult(_input: unknown, result: ValidationError<T> | null): _input is T;
|
|
35
|
+
}
|
package/Validator.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Validator = void 0;
|
|
4
|
+
const ValidationError_1 = require("./errors/ValidationError");
|
|
5
|
+
class Validator {
|
|
6
|
+
createError(error, message, fields) {
|
|
7
|
+
return new ValidationError_1.ValidationError(this.type, error, message, fields);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Validate input.
|
|
11
|
+
*
|
|
12
|
+
* @param input Input value to validate.
|
|
13
|
+
* @returns True when input is valid, else False.
|
|
14
|
+
*/
|
|
15
|
+
validate(input) {
|
|
16
|
+
return !this.validateReturn(input);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Validate input.
|
|
20
|
+
*
|
|
21
|
+
* @param input Input value to validate.
|
|
22
|
+
* @throws ValidationError When input is invalid.
|
|
23
|
+
*/
|
|
24
|
+
validateOrThrow(input) {
|
|
25
|
+
const response = this.validateReturn(input);
|
|
26
|
+
if (response) {
|
|
27
|
+
throw response;
|
|
28
|
+
}
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Type narrow input using the validation result.
|
|
33
|
+
*
|
|
34
|
+
* @param _input Input that was validated.
|
|
35
|
+
* @param result Result from the validation.
|
|
36
|
+
* @returns True if the result says the input was valid.
|
|
37
|
+
*/
|
|
38
|
+
validateResult(_input, result) {
|
|
39
|
+
return !result;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.Validator = Validator;
|
|
43
|
+
//# sourceMappingURL=Validator.js.map
|
package/Validator.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Validator.js","sourceRoot":"","sources":["../src/Validator.ts"],"names":[],"mappings":";;;AACA,8DAAwE;AAExE,MAAsB,SAAS;IAGjB,WAAW,CAAC,KAAiB,EAAE,OAAe,EAAE,MAAuB;QAC7E,OAAO,IAAI,iCAAe,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAUD;;;;;OAKG;IACI,QAAQ,CAAC,KAAc;QAC1B,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD;;;;;OAKG;IACI,eAAe,CAAC,KAAc;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,QAAQ,EAAE,CAAC;YACX,MAAM,QAAQ,CAAC;QACnB,CAAC;QACD,OAAO;IACX,CAAC;IAED;;;;;;OAMG;IACI,cAAc,CAAC,MAAe,EAAE,MAAiC;QACpE,OAAO,CAAC,MAAM,CAAC;IACnB,CAAC;CACJ;AAhDD,8BAgDC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const ErrorType: {
|
|
2
|
+
readonly INCORRECT_TYPE: "INCORRECT_TYPE";
|
|
3
|
+
readonly INCORRECT_FORMAT: "INCORRECT_FORMAT";
|
|
4
|
+
readonly UNKNOWN_FIELD: "UNKNOWN_FIELD";
|
|
5
|
+
readonly NO_MATCH: "NO_MATCH";
|
|
6
|
+
readonly VALUE_BELOW: "VALUE_BELOW";
|
|
7
|
+
readonly VALUE_ABOVE: "VALUE_ABOVE";
|
|
8
|
+
readonly VALUE_BELOW_EXCLUSIVE: "VALUE_BELOW_EXCLUSIVE";
|
|
9
|
+
readonly VALUE_ABOVE_EXCLUSIVE: "VALUE_ABOVE_EXCLUSIVE";
|
|
10
|
+
readonly VALUE_SHORT: "VALUE_SHORT";
|
|
11
|
+
readonly VALUE_LONG: "VALUE_LONG";
|
|
12
|
+
};
|
|
13
|
+
export type ErrorType = typeof ErrorType;
|
|
14
|
+
export type ErrorValue = ErrorType[keyof ErrorType];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ErrorType = void 0;
|
|
4
|
+
exports.ErrorType = {
|
|
5
|
+
INCORRECT_TYPE: "INCORRECT_TYPE",
|
|
6
|
+
INCORRECT_FORMAT: "INCORRECT_FORMAT",
|
|
7
|
+
UNKNOWN_FIELD: "UNKNOWN_FIELD",
|
|
8
|
+
NO_MATCH: "NO_MATCH",
|
|
9
|
+
VALUE_BELOW: "VALUE_BELOW",
|
|
10
|
+
VALUE_ABOVE: "VALUE_ABOVE",
|
|
11
|
+
VALUE_BELOW_EXCLUSIVE: "VALUE_BELOW_EXCLUSIVE",
|
|
12
|
+
VALUE_ABOVE_EXCLUSIVE: "VALUE_ABOVE_EXCLUSIVE",
|
|
13
|
+
VALUE_SHORT: "VALUE_SHORT",
|
|
14
|
+
VALUE_LONG: "VALUE_LONG",
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=ErrorType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorType.js","sourceRoot":"","sources":["../../src/errors/ErrorType.ts"],"names":[],"mappings":";;;AACa,QAAA,SAAS,GAAG;IACrB,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,kBAAkB;IAEpC,aAAa,EAAE,eAAe;IAE9B,QAAQ,EAAE,UAAU;IAEpB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,qBAAqB,EAAE,uBAAuB;IAC9C,qBAAqB,EAAE,uBAAuB;IAC9C,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;CAClB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ErrorValue } from "./ErrorType";
|
|
2
|
+
export type ErrorFields<T> = (T extends object ? {
|
|
3
|
+
[K in keyof T]: ValidationError<T[K]> | undefined;
|
|
4
|
+
} : never) | Record<number, ValidationError<T>>;
|
|
5
|
+
export declare class ValidationError<T extends unknown = unknown> extends Error {
|
|
6
|
+
readonly type: string;
|
|
7
|
+
readonly error: ErrorValue;
|
|
8
|
+
readonly fields?: ErrorFields<T>;
|
|
9
|
+
constructor(type: string, error: ErrorValue, message: string, fields?: ErrorFields<T>);
|
|
10
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ValidationError = void 0;
|
|
4
|
+
class ValidationError extends Error {
|
|
5
|
+
type;
|
|
6
|
+
error;
|
|
7
|
+
fields;
|
|
8
|
+
constructor(type, error, message, fields) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.type = type;
|
|
11
|
+
this.error = error;
|
|
12
|
+
this.fields = fields;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.ValidationError = ValidationError;
|
|
16
|
+
//# sourceMappingURL=ValidationError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationError.js","sourceRoot":"","sources":["../../src/errors/ValidationError.ts"],"names":[],"mappings":";;;AAMA,MAAa,eAEX,SAAQ,KAAK;IACK,IAAI,CAAS;IACb,KAAK,CAAa;IAClB,MAAM,CAAiB;IAEvC,YAAmB,IAAY,EAAE,KAAiB,EAAE,OAAe,EAAE,MAAuB;QACxF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;CACJ;AAbD,0CAaC"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BooleanValidator } from "./types/bool/BooleanValidator";
|
|
2
|
+
import { IntValidator, type IntValidationOptions } from "./types/number/IntValidator";
|
|
3
|
+
import { NumberValidator, type NumberValidationOptions } from "./types/number/NumberValidator";
|
|
4
|
+
import { ObjectValidator, type FieldValidators } from "./types/object/ObjectValidator";
|
|
5
|
+
import { OptionalValidator } from "./types/util/OptionalValidator";
|
|
6
|
+
import { stringValidator, type StringValidationOptions } from "./types/string/StringValidator";
|
|
7
|
+
import { Validator } from "./Validator";
|
|
8
|
+
import { AnyValidator } from "./types/util/AnyValidator";
|
|
9
|
+
import { AnyOfValidator, type AnyOfValidators } from "./types/util/AnyOfValidator";
|
|
10
|
+
export declare namespace v {
|
|
11
|
+
const boolean: () => BooleanValidator;
|
|
12
|
+
const int: (options?: IntValidationOptions) => IntValidator;
|
|
13
|
+
const number: (options?: NumberValidationOptions) => NumberValidator;
|
|
14
|
+
const object: <T extends object>(fields: FieldValidators<T>) => ObjectValidator<T>;
|
|
15
|
+
const string: (options?: StringValidationOptions) => stringValidator;
|
|
16
|
+
const anyOf: <T>(validators: AnyOfValidators<T>) => AnyOfValidator<T>;
|
|
17
|
+
const any: <T>() => AnyValidator<T>;
|
|
18
|
+
const optional: <T>(val: Validator<Exclude<T, undefined | null>>) => OptionalValidator<T>;
|
|
19
|
+
}
|
package/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.v = void 0;
|
|
4
|
+
const BooleanValidator_1 = require("./types/bool/BooleanValidator");
|
|
5
|
+
const IntValidator_1 = require("./types/number/IntValidator");
|
|
6
|
+
const NumberValidator_1 = require("./types/number/NumberValidator");
|
|
7
|
+
const ObjectValidator_1 = require("./types/object/ObjectValidator");
|
|
8
|
+
const OptionalValidator_1 = require("./types/util/OptionalValidator");
|
|
9
|
+
const StringValidator_1 = require("./types/string/StringValidator");
|
|
10
|
+
const AnyValidator_1 = require("./types/util/AnyValidator");
|
|
11
|
+
const AnyOfValidator_1 = require("./types/util/AnyOfValidator");
|
|
12
|
+
var v;
|
|
13
|
+
(function (v) {
|
|
14
|
+
v.boolean = () => new BooleanValidator_1.BooleanValidator();
|
|
15
|
+
v.int = (options) => new IntValidator_1.IntValidator(options);
|
|
16
|
+
v.number = (options) => new NumberValidator_1.NumberValidator(options);
|
|
17
|
+
v.object = (fields) => new ObjectValidator_1.ObjectValidator(fields);
|
|
18
|
+
v.string = (options) => new StringValidator_1.stringValidator(options);
|
|
19
|
+
v.anyOf = (validators) => new AnyOfValidator_1.AnyOfValidator(validators);
|
|
20
|
+
v.any = () => new AnyValidator_1.AnyValidator();
|
|
21
|
+
v.optional = (val) => new OptionalValidator_1.OptionalValidator(val);
|
|
22
|
+
})(v || (exports.v = v = {}));
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,oEAAiE;AACjE,8DAAsF;AACtF,oEAA+F;AAC/F,oEAAuF;AACvF,sEAAmE;AACnE,oEAA+F;AAE/F,4DAAyD;AACzD,gEAAmF;AAEnF,IAAiB,CAAC,CAajB;AAbD,WAAiB,CAAC;IACD,SAAO,GAAG,GAAG,EAAE,CAAC,IAAI,mCAAgB,EAAE,CAAC;IAEvC,KAAG,GAAG,CAAC,OAA8B,EAAE,EAAE,CAAC,IAAI,2BAAY,CAAC,OAAO,CAAC,CAAC;IACpE,QAAM,GAAG,CAAC,OAAiC,EAAE,EAAE,CAAC,IAAI,iCAAe,CAAC,OAAO,CAAC,CAAC;IAE7E,QAAM,GAAG,CAAmB,MAA0B,EAAE,EAAE,CAAC,IAAI,iCAAe,CAAC,MAAM,CAAC,CAAC;IAEvF,QAAM,GAAG,CAAC,OAAiC,EAAE,EAAE,CAAC,IAAI,iCAAe,CAAC,OAAO,CAAC,CAAC;IAE7E,OAAK,GAAG,CAAI,UAA8B,EAAE,EAAE,CAAC,IAAI,+BAAc,CAAC,UAAU,CAAC,CAAC;IAC9E,KAAG,GAAG,GAAM,EAAE,CAAC,IAAI,2BAAY,EAAK,CAAC;IACrC,UAAQ,GAAG,CAAI,GAA4C,EAAE,EAAE,CAAC,IAAI,qCAAiB,CAAC,GAAG,CAAC,CAAC;AAC5G,CAAC,EAbgB,CAAC,iBAAD,CAAC,QAajB"}
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@local901/validator",
|
|
3
|
+
"version": "0.0.3",
|
|
4
|
+
"description": "Type validator for javascript and typescript",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build": "tsc",
|
|
8
|
+
"test": "test"
|
|
9
|
+
},
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+ssh://git@github.com/Local901/js-validator.git"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"validate",
|
|
16
|
+
"validator"
|
|
17
|
+
],
|
|
18
|
+
"author": "Local901",
|
|
19
|
+
"license": "ISC",
|
|
20
|
+
"bugs": {
|
|
21
|
+
"url": "https://github.com/Local901/js-validator/issues"
|
|
22
|
+
},
|
|
23
|
+
"homepage": "https://github.com/Local901/js-validator#readme",
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@types/node": "^24.0.12",
|
|
26
|
+
"typescript": "^5.8.3"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ErrorType } from "../../errors/ErrorType";
|
|
2
|
+
import { ValidationError } from "../../errors/ValidationError";
|
|
3
|
+
import { Validator } from "../../Validator";
|
|
4
|
+
export type BooleanValidationError = ErrorType;
|
|
5
|
+
export declare class BooleanValidator extends Validator<boolean> {
|
|
6
|
+
type: string;
|
|
7
|
+
/** @inheritdoc */
|
|
8
|
+
validateReturn(input: unknown): ValidationError<boolean> | null;
|
|
9
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BooleanValidator = void 0;
|
|
4
|
+
const ErrorType_1 = require("../../errors/ErrorType");
|
|
5
|
+
const Validator_1 = require("../../Validator");
|
|
6
|
+
class BooleanValidator extends Validator_1.Validator {
|
|
7
|
+
type = "boolean";
|
|
8
|
+
/** @inheritdoc */
|
|
9
|
+
validateReturn(input) {
|
|
10
|
+
if (typeof input !== "boolean") {
|
|
11
|
+
return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "Has to be a boolean.");
|
|
12
|
+
}
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.BooleanValidator = BooleanValidator;
|
|
17
|
+
//# sourceMappingURL=BooleanValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BooleanValidator.js","sourceRoot":"","sources":["../../../src/types/bool/BooleanValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAA4C;AAI5C,MAAa,gBAAiB,SAAQ,qBAAkB;IACpC,IAAI,GAAG,SAAS,CAAC;IAEjC,kBAAkB;IACF,cAAc,CAAC,KAAc;QACzC,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAVD,4CAUC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ValidationError } from "../../errors/ValidationError";
|
|
2
|
+
import { Validator } from "../../Validator";
|
|
3
|
+
export interface IntValidationOptions {
|
|
4
|
+
/** Minimum value of the int. */
|
|
5
|
+
min?: number;
|
|
6
|
+
/** Maximum value of the int. */
|
|
7
|
+
max?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare class IntValidator extends Validator<number> {
|
|
10
|
+
private readonly options;
|
|
11
|
+
type: string;
|
|
12
|
+
constructor(options?: IntValidationOptions);
|
|
13
|
+
/** @inheritdoc */
|
|
14
|
+
validateReturn(input: unknown): ValidationError<number> | null;
|
|
15
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IntValidator = void 0;
|
|
4
|
+
const ErrorType_1 = require("../../errors/ErrorType");
|
|
5
|
+
const Validator_1 = require("../../Validator");
|
|
6
|
+
class IntValidator extends Validator_1.Validator {
|
|
7
|
+
options;
|
|
8
|
+
type = "ïnt";
|
|
9
|
+
constructor(options = {}) {
|
|
10
|
+
super();
|
|
11
|
+
this.options = options;
|
|
12
|
+
}
|
|
13
|
+
/** @inheritdoc */
|
|
14
|
+
validateReturn(input) {
|
|
15
|
+
// Type check.
|
|
16
|
+
if (typeof input !== "number" || Math.floor(input) !== input) {
|
|
17
|
+
return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "Has to be a int.");
|
|
18
|
+
}
|
|
19
|
+
// Minimum value check
|
|
20
|
+
if (this.options.min !== undefined && input < this.options.min) {
|
|
21
|
+
return this.createError(ErrorType_1.ErrorType.VALUE_BELOW, `Has to be a minimum value of ${this.options.min}`);
|
|
22
|
+
}
|
|
23
|
+
// Maximum value check
|
|
24
|
+
if (this.options.max !== undefined && this.options.max < input) {
|
|
25
|
+
return this.createError(ErrorType_1.ErrorType.VALUE_ABOVE, `Has to be a maximum value of ${this.options.max}`);
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.IntValidator = IntValidator;
|
|
31
|
+
//# sourceMappingURL=IntValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IntValidator.js","sourceRoot":"","sources":["../../../src/types/number/IntValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAA4C;AAS5C,MAAa,YAAa,SAAQ,qBAAiB;IAGX;IAFpB,IAAI,GAAG,KAAK,CAAC;IAE7B,YAAoC,UAAgC,EAAE;QAClE,KAAK,EAAE,CAAC;QADwB,YAAO,GAAP,OAAO,CAA2B;IAEtE,CAAC;IAED,kBAAkB;IACF,cAAc,CAAC,KAAc;QACzC,cAAc;QACd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QAC1E,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,WAAW,EAAE,gCAAgC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QACtG,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,WAAW,EAAE,gCAAgC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QACtG,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAzBD,oCAyBC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ValidationError } from "../../errors/ValidationError";
|
|
2
|
+
import { Validator } from "../../Validator";
|
|
3
|
+
export interface NumberValidationOptions {
|
|
4
|
+
/** Minimum value of the number. */
|
|
5
|
+
min?: number;
|
|
6
|
+
/** Is the minimum value exclusive. */
|
|
7
|
+
minExclusive?: boolean;
|
|
8
|
+
/** Maximum value of the number. */
|
|
9
|
+
max?: number;
|
|
10
|
+
/** Is the maximin value exclusive. */
|
|
11
|
+
maxExclusive?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare class NumberValidator extends Validator<number> {
|
|
14
|
+
private readonly options;
|
|
15
|
+
type: string;
|
|
16
|
+
constructor(options?: NumberValidationOptions);
|
|
17
|
+
/** @inheritdoc */
|
|
18
|
+
validateReturn(input: unknown): ValidationError<number> | null;
|
|
19
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NumberValidator = void 0;
|
|
4
|
+
const ErrorType_1 = require("../../errors/ErrorType");
|
|
5
|
+
const Validator_1 = require("../../Validator");
|
|
6
|
+
class NumberValidator extends Validator_1.Validator {
|
|
7
|
+
options;
|
|
8
|
+
type = "number";
|
|
9
|
+
constructor(options = {}) {
|
|
10
|
+
super();
|
|
11
|
+
this.options = options;
|
|
12
|
+
}
|
|
13
|
+
/** @inheritdoc */
|
|
14
|
+
validateReturn(input) {
|
|
15
|
+
// Type check.
|
|
16
|
+
if (typeof input !== "number") {
|
|
17
|
+
return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "Has to be a number.");
|
|
18
|
+
}
|
|
19
|
+
// Minimum value check.
|
|
20
|
+
if (this.options.min !== undefined && (this.options.minExclusive ? input <= this.options.min : input < this.options.min)) {
|
|
21
|
+
return this.createError(this.options.minExclusive ? ErrorType_1.ErrorType.VALUE_BELOW_EXCLUSIVE : ErrorType_1.ErrorType.VALUE_BELOW, `Has to be a minimum value of ${this.options.min}${this.options.minExclusive ? " (exclusive)" : ""}`);
|
|
22
|
+
}
|
|
23
|
+
// Maximum value check.
|
|
24
|
+
if (this.options.max !== undefined && (this.options.maxExclusive ? this.options.max <= input : this.options.max < input)) {
|
|
25
|
+
return this.createError(this.options.maxExclusive ? ErrorType_1.ErrorType.VALUE_ABOVE_EXCLUSIVE : ErrorType_1.ErrorType.VALUE_ABOVE, `Has to be a maximum value of ${this.options.max}${this.options.minExclusive ? " (exclusive)" : ""}`);
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.NumberValidator = NumberValidator;
|
|
31
|
+
//# sourceMappingURL=NumberValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumberValidator.js","sourceRoot":"","sources":["../../../src/types/number/NumberValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAA4C;AAa5C,MAAa,eAAgB,SAAQ,qBAAiB;IAGd;IAFpB,IAAI,GAAG,QAAQ,CAAC;IAEhC,YAAoC,UAAmC,EAAE;QACrE,KAAK,EAAE,CAAC;QADwB,YAAO,GAAP,OAAO,CAA8B;IAEzE,CAAC;IAED,kBAAkB;IACF,cAAc,CAAC,KAAc;QACzC,cAAc;QACd,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;QAC7E,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvH,OAAO,IAAI,CAAC,WAAW,CACnB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,qBAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,qBAAS,CAAC,WAAW,EACnF,gCAAgC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CACvG,CAAC;QACN,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC;YACvH,OAAO,IAAI,CAAC,WAAW,CACnB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,qBAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,qBAAS,CAAC,WAAW,EACnF,gCAAgC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CACvG,CAAC;QACN,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AA/BD,0CA+BC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ValidationError } from "../../errors/ValidationError";
|
|
2
|
+
import { Validator } from "../../Validator";
|
|
3
|
+
export type FieldValidators<T extends object> = {
|
|
4
|
+
[K in keyof T]: Validator<T[K]>;
|
|
5
|
+
};
|
|
6
|
+
export declare class ObjectValidator<T extends object> extends Validator<T> {
|
|
7
|
+
readonly fields: FieldValidators<T>;
|
|
8
|
+
type: string;
|
|
9
|
+
constructor(fields: FieldValidators<T>);
|
|
10
|
+
/** @inheritdoc */
|
|
11
|
+
validateReturn(input: unknown): ValidationError<T> | null;
|
|
12
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ObjectValidator = void 0;
|
|
4
|
+
const ErrorType_1 = require("../../errors/ErrorType");
|
|
5
|
+
const Validator_1 = require("../../Validator");
|
|
6
|
+
class ObjectValidator extends Validator_1.Validator {
|
|
7
|
+
fields;
|
|
8
|
+
type = "object";
|
|
9
|
+
constructor(fields) {
|
|
10
|
+
super();
|
|
11
|
+
this.fields = fields;
|
|
12
|
+
}
|
|
13
|
+
/** @inheritdoc */
|
|
14
|
+
validateReturn(input) {
|
|
15
|
+
// Check type
|
|
16
|
+
if (typeof input !== "object" || input === null) {
|
|
17
|
+
return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "Has to be an object.");
|
|
18
|
+
}
|
|
19
|
+
// Check for excess keys.
|
|
20
|
+
const fieldKeys = Object.keys(this.fields);
|
|
21
|
+
const inputKeys = Object.keys(input);
|
|
22
|
+
const extraKeys = inputKeys.filter((k) => !fieldKeys.includes(k));
|
|
23
|
+
// Check field types
|
|
24
|
+
let hasError = false;
|
|
25
|
+
const fields = Object.fromEntries(Object.entries(this.fields).map(([key, validator]) => {
|
|
26
|
+
const result = validator.validateReturn(input[key]);
|
|
27
|
+
if (result !== null) {
|
|
28
|
+
hasError = true;
|
|
29
|
+
}
|
|
30
|
+
return [key, result ?? undefined];
|
|
31
|
+
}));
|
|
32
|
+
if (hasError || extraKeys.length) {
|
|
33
|
+
if (extraKeys.length) {
|
|
34
|
+
return this.createError(ErrorType_1.ErrorType.UNKNOWN_FIELD, `No extra keys allowed. Found [${extraKeys.join(", ")}]`, hasError ? fields : undefined);
|
|
35
|
+
}
|
|
36
|
+
return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "One or more fields are incorrect.", fields);
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.ObjectValidator = ObjectValidator;
|
|
42
|
+
//# sourceMappingURL=ObjectValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectValidator.js","sourceRoot":"","sources":["../../../src/types/object/ObjectValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAA4C;AAM5C,MAAa,eAAkC,SAAQ,qBAAY;IAG5B;IAFnB,IAAI,GAAG,QAAQ,CAAC;IAEhC,YAAmC,MAA0B;QACzD,KAAK,EAAE,CAAC;QADuB,WAAM,GAAN,MAAM,CAAoB;IAE7D,CAAC;IAED,kBAAkB;IACF,cAAc,CAAC,KAAc;QACzC,aAAa;QACb,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;QAC9E,CAAC;QAED,yBAAyB;QACzB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAElE,oBAAoB;QACpB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE;YACnF,MAAM,MAAM,GAAI,SAAuB,CAAC,cAAc,CAAE,KAAmD,CAAC,GAAG,CAAC,CAAC,CAAC;YAClH,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClB,QAAQ,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC,CAAmB,CAAC;QAEtB,IAAI,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC,WAAW,CACnB,qBAAS,CAAC,aAAa,EACvB,iCAAiC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EACxD,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAChC,CAAC;YACN,CAAC;YACD,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,cAAc,EAAE,mCAAmC,EAAE,MAAM,CAAC,CAAC;QACnG,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ;AA1CD,0CA0CC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ValidationError } from "../../errors/ValidationError";
|
|
2
|
+
import { Validator } from "../../Validator";
|
|
3
|
+
export interface StringValidationOptions {
|
|
4
|
+
/** Minimum length of the string. */
|
|
5
|
+
min?: number;
|
|
6
|
+
/** Maximum length of the string. */
|
|
7
|
+
max?: number;
|
|
8
|
+
/** The regex the value has to match. */
|
|
9
|
+
regex?: RegExp;
|
|
10
|
+
/** Allowed values. (Will ignore all other options.) */
|
|
11
|
+
enum?: string[];
|
|
12
|
+
}
|
|
13
|
+
export declare class stringValidator extends Validator<string> {
|
|
14
|
+
private readonly options;
|
|
15
|
+
type: string;
|
|
16
|
+
constructor(options?: StringValidationOptions);
|
|
17
|
+
/** @inheritdoc */
|
|
18
|
+
validateReturn(input: unknown): ValidationError<string> | null;
|
|
19
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stringValidator = void 0;
|
|
4
|
+
const ErrorType_1 = require("../../errors/ErrorType");
|
|
5
|
+
const Validator_1 = require("../../Validator");
|
|
6
|
+
class stringValidator extends Validator_1.Validator {
|
|
7
|
+
options;
|
|
8
|
+
type = "string";
|
|
9
|
+
constructor(options = {}) {
|
|
10
|
+
super();
|
|
11
|
+
this.options = options;
|
|
12
|
+
}
|
|
13
|
+
/** @inheritdoc */
|
|
14
|
+
validateReturn(input) {
|
|
15
|
+
// Type check.
|
|
16
|
+
if (typeof input !== "string") {
|
|
17
|
+
return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "Has to be a string.");
|
|
18
|
+
}
|
|
19
|
+
// Enum Check.
|
|
20
|
+
if (this.options.enum) {
|
|
21
|
+
if (!this.options.enum.includes(input)) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
return this.createError(ErrorType_1.ErrorType.NO_MATCH, `Has to match one of the known values [${this.options.enum.join(", ")}]`);
|
|
25
|
+
}
|
|
26
|
+
// Minimum length check.
|
|
27
|
+
if (this.options.min !== undefined && input.length < this.options.min) {
|
|
28
|
+
return this.createError(ErrorType_1.ErrorType.VALUE_SHORT, `Has to have a minimum length of ${this.options.min}`);
|
|
29
|
+
}
|
|
30
|
+
// Maximum length check.
|
|
31
|
+
if (this.options.max !== undefined && this.options.max < input.length) {
|
|
32
|
+
return this.createError(ErrorType_1.ErrorType.VALUE_LONG, `Has to have a maximum length of ${this.options.max}`);
|
|
33
|
+
}
|
|
34
|
+
// Regex format check.
|
|
35
|
+
if (this.options.regex && !this.options.regex.test(input)) {
|
|
36
|
+
return this.createError(ErrorType_1.ErrorType.INCORRECT_FORMAT, `Has to match format '${this.options.regex.source}'`);
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.stringValidator = stringValidator;
|
|
42
|
+
//# sourceMappingURL=StringValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StringValidator.js","sourceRoot":"","sources":["../../../src/types/string/StringValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAA4C;AAa5C,MAAa,eAAgB,SAAQ,qBAAiB;IAGd;IAFpB,IAAI,GAAG,QAAQ,CAAC;IAEhC,YAAoC,UAAmC,EAAE;QACrE,KAAK,EAAE,CAAC;QADwB,YAAO,GAAP,OAAO,CAA8B;IAEzE,CAAC;IAED,kBAAkB;IACF,cAAc,CAAC,KAAc;QACzC,cAAc;QACd,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;QAC7E,CAAC;QAED,cAAc;QACd,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,OAAO,IAAI,CAAC,WAAW,CACnB,qBAAS,CAAC,QAAQ,EAClB,yCAAyC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC3E,CAAC;QACN,CAAC;QAED,wBAAwB;QACxB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACpE,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,WAAW,EAAE,mCAAmC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1G,CAAC;QAED,wBAAwB;QACxB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACpE,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,UAAU,EAAE,mCAAmC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACzG,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,gBAAgB,EAAE,wBAAwB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9G,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAzCD,0CAyCC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ValidationError } from "../../errors/ValidationError";
|
|
2
|
+
import { Validator } from "../../Validator";
|
|
3
|
+
export type AnyOfValidators<T> = ReadonlyArray<T extends unknown ? Validator<T> : never>;
|
|
4
|
+
export declare class AnyOfValidator<T> extends Validator<T> {
|
|
5
|
+
readonly validators: AnyOfValidators<T>;
|
|
6
|
+
type: string;
|
|
7
|
+
constructor(validators: AnyOfValidators<T>);
|
|
8
|
+
validateReturn(input: unknown): ValidationError<T> | null;
|
|
9
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AnyOfValidator = void 0;
|
|
4
|
+
const ErrorType_1 = require("../../errors/ErrorType");
|
|
5
|
+
const Validator_1 = require("../../Validator");
|
|
6
|
+
class AnyOfValidator extends Validator_1.Validator {
|
|
7
|
+
validators;
|
|
8
|
+
type = "anyof";
|
|
9
|
+
constructor(validators) {
|
|
10
|
+
super();
|
|
11
|
+
this.validators = validators;
|
|
12
|
+
}
|
|
13
|
+
validateReturn(input) {
|
|
14
|
+
const errors = {};
|
|
15
|
+
let i = 0;
|
|
16
|
+
for (const validator of this.validators) {
|
|
17
|
+
const result = validator.validateReturn(input);
|
|
18
|
+
if (result === null) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
errors[i++] = result;
|
|
22
|
+
}
|
|
23
|
+
return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "Has to match at least one of the types.", errors);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.AnyOfValidator = AnyOfValidator;
|
|
27
|
+
//# sourceMappingURL=AnyOfValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnyOfValidator.js","sourceRoot":"","sources":["../../../src/types/util/AnyOfValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAA4C;AAI5C,MAAa,cAAkB,SAAQ,qBAAY;IAGZ;IAFnB,IAAI,GAAG,OAAO,CAAC;IAE/B,YAAmC,UAA8B;QAC7D,KAAK,EAAE,CAAC;QADuB,eAAU,GAAV,UAAU,CAAoB;IAEjE,CAAC;IAEe,cAAc,CAAC,KAAc;QACzC,MAAM,MAAM,GAAuC,EAAE,CAAC;QACtD,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,cAAc,EAAE,yCAAyC,EAAE,MAAM,CAAC,CAAC;IACzG,CAAC;CAEJ;AApBD,wCAoBC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ValidationError } from "../../errors/ValidationError";
|
|
2
|
+
import { Validator } from "../../Validator";
|
|
3
|
+
export declare class AnyValidator<T> extends Validator<T> {
|
|
4
|
+
type: string;
|
|
5
|
+
/** @inheritdoc */
|
|
6
|
+
validateReturn(_input: unknown): ValidationError<T> | null;
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AnyValidator = void 0;
|
|
4
|
+
const Validator_1 = require("../../Validator");
|
|
5
|
+
class AnyValidator extends Validator_1.Validator {
|
|
6
|
+
type = "any";
|
|
7
|
+
/** @inheritdoc */
|
|
8
|
+
validateReturn(_input) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.AnyValidator = AnyValidator;
|
|
13
|
+
//# sourceMappingURL=AnyValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnyValidator.js","sourceRoot":"","sources":["../../../src/types/util/AnyValidator.ts"],"names":[],"mappings":";;;AACA,+CAA4C;AAE5C,MAAa,YAAgB,SAAQ,qBAAY;IAC7B,IAAI,GAAG,KAAK,CAAC;IAE7B,kBAAkB;IACF,cAAc,CAAC,MAAe;QAC1C,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAPD,oCAOC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ValidationError } from "../../errors/ValidationError";
|
|
2
|
+
import { Validator } from "../../Validator";
|
|
3
|
+
export declare class OptionalValidator<T> extends Validator<T> {
|
|
4
|
+
readonly child: Validator<Exclude<T, undefined | null>>;
|
|
5
|
+
type: string;
|
|
6
|
+
constructor(child: Validator<Exclude<T, undefined | null>>);
|
|
7
|
+
/** @inheritdoc */
|
|
8
|
+
validateReturn(input: unknown): ValidationError<T> | null;
|
|
9
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OptionalValidator = void 0;
|
|
4
|
+
const Validator_1 = require("../../Validator");
|
|
5
|
+
class OptionalValidator extends Validator_1.Validator {
|
|
6
|
+
child;
|
|
7
|
+
type = "optional";
|
|
8
|
+
constructor(child) {
|
|
9
|
+
super();
|
|
10
|
+
this.child = child;
|
|
11
|
+
}
|
|
12
|
+
/** @inheritdoc */
|
|
13
|
+
validateReturn(input) {
|
|
14
|
+
if (input === undefined || input === null) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
return this.child.validateReturn(input);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.OptionalValidator = OptionalValidator;
|
|
21
|
+
//# sourceMappingURL=OptionalValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OptionalValidator.js","sourceRoot":"","sources":["../../../src/types/util/OptionalValidator.ts"],"names":[],"mappings":";;;AACA,+CAA4C;AAE5C,MAAa,iBAAqB,SAAQ,qBAAY;IAGf;IAFnB,IAAI,GAAG,UAAU,CAAC;IAElC,YAAmC,KAA8C;QAC7E,KAAK,EAAE,CAAA;QADwB,UAAK,GAAL,KAAK,CAAyC;IAEjF,CAAC;IAED,kBAAkB;IACF,cAAc,CAAC,KAAc;QACzC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;CAEJ;AAfD,8CAeC"}
|