@local901/validator 0.0.4 → 0.1.0

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # js-validator
2
2
 
3
- Validator for javascript and typescript. Do you have an object with uncertain contents. USe a validator to make sure what you have.
3
+ Validator for javascript and typescript. Do you have an object with uncertain contents. Use a validator to make sure what you have.
4
4
 
5
5
  Quick start:
6
6
  ```shell
@@ -1,10 +1,12 @@
1
1
  import type { ErrorValue } from "./ErrorType";
2
- export type ErrorFields<T> = (T extends object ? {
2
+ type ArrayError<T extends ReadonlyArray<unknown>> = T extends [infer ITEM, ...infer ARR] ? [ValidationError<ITEM> | null, ...ARR extends never[] ? [] : ArrayError<ARR>] : T extends ReadonlyArray<infer ARR> ? Array<ValidationError<ARR> | null> : never;
3
+ export type ErrorFields<T> = ((T extends object ? T extends readonly unknown[] ? ArrayError<T> : {
3
4
  [K in keyof T]: ValidationError<T[K]> | undefined;
4
- } : never) | Record<number, ValidationError<T>>;
5
+ } : never) | Record<number, ValidationError<T>>);
5
6
  export declare class ValidationError<T extends unknown = unknown> extends Error {
6
7
  readonly type: string;
7
8
  readonly error: ErrorValue;
8
9
  readonly fields?: ErrorFields<T>;
9
10
  constructor(type: string, error: ErrorValue, message: string, fields?: ErrorFields<T>);
10
11
  }
12
+ export {};
@@ -1 +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"}
1
+ {"version":3,"file":"ValidationError.js","sourceRoot":"","sources":["../../src/errors/ValidationError.ts"],"names":[],"mappings":";;;AAYA,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 CHANGED
@@ -6,14 +6,23 @@ import { OptionalValidator } from "./types/util/OptionalValidator";
6
6
  import { stringValidator, type StringValidationOptions } from "./types/string/StringValidator";
7
7
  import { Validator } from "./Validator";
8
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>;
9
+ import { OrValidator, type OrValidators } from "./types/util/OrValidator";
10
+ import { ArrayValidator, type ArrayValidatorOptions } from "./types/object/ArrayValidator";
11
+ import { EnumValidator, type EnumLike } from "./types/object/EnumValidator";
12
+ import { TupleValidator, type TupleValidators } from "./types/object/TupleValidator";
13
+ export { Validator } from "./Validator";
14
+ export { ErrorType, type ErrorValue } from "./errors/ErrorType";
15
+ export { ValidationError, type ErrorFields } from "./errors/ValidationError";
16
+ export declare class v {
17
+ static boolean: () => BooleanValidator;
18
+ static int: (options?: IntValidationOptions) => IntValidator;
19
+ static number: (options?: NumberValidationOptions) => NumberValidator;
20
+ static array: <T>(item: Validator<T>, options?: ArrayValidatorOptions) => ArrayValidator<T>;
21
+ static enum: <T extends EnumLike>(enumInstance: T) => EnumValidator<T>;
22
+ static object: <T extends object>(fields: FieldValidators<T>) => ObjectValidator<T>;
23
+ static tuple: <T extends [...unknown[]]>(validators: TupleValidators<T>) => TupleValidator<T>;
24
+ static string: <T extends string = string>(options?: StringValidationOptions) => stringValidator<T>;
25
+ static any: <T>() => AnyValidator<T>;
26
+ static optional: <T>(val: Validator<Exclude<T, undefined | null>>) => OptionalValidator<T>;
27
+ static or: <T>(validators: OrValidators<T>) => OrValidator<T>;
19
28
  }
package/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.v = void 0;
3
+ exports.v = exports.ValidationError = exports.ErrorType = exports.Validator = void 0;
4
4
  const BooleanValidator_1 = require("./types/bool/BooleanValidator");
5
5
  const IntValidator_1 = require("./types/number/IntValidator");
6
6
  const NumberValidator_1 = require("./types/number/NumberValidator");
@@ -8,16 +8,28 @@ const ObjectValidator_1 = require("./types/object/ObjectValidator");
8
8
  const OptionalValidator_1 = require("./types/util/OptionalValidator");
9
9
  const StringValidator_1 = require("./types/string/StringValidator");
10
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 = {}));
11
+ const OrValidator_1 = require("./types/util/OrValidator");
12
+ const ArrayValidator_1 = require("./types/object/ArrayValidator");
13
+ const EnumValidator_1 = require("./types/object/EnumValidator");
14
+ const TupleValidator_1 = require("./types/object/TupleValidator");
15
+ var Validator_1 = require("./Validator");
16
+ Object.defineProperty(exports, "Validator", { enumerable: true, get: function () { return Validator_1.Validator; } });
17
+ var ErrorType_1 = require("./errors/ErrorType");
18
+ Object.defineProperty(exports, "ErrorType", { enumerable: true, get: function () { return ErrorType_1.ErrorType; } });
19
+ var ValidationError_1 = require("./errors/ValidationError");
20
+ Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return ValidationError_1.ValidationError; } });
21
+ class v {
22
+ static boolean = () => new BooleanValidator_1.BooleanValidator();
23
+ static int = (options) => new IntValidator_1.IntValidator(options);
24
+ static number = (options) => new NumberValidator_1.NumberValidator(options);
25
+ static array = (item, options) => new ArrayValidator_1.ArrayValidator(item, options);
26
+ static enum = (enumInstance) => new EnumValidator_1.EnumValidator(enumInstance);
27
+ static object = (fields) => new ObjectValidator_1.ObjectValidator(fields);
28
+ static tuple = (validators) => new TupleValidator_1.TupleValidator(validators);
29
+ static string = (options) => new StringValidator_1.stringValidator(options);
30
+ static any = () => new AnyValidator_1.AnyValidator();
31
+ static optional = (val) => new OptionalValidator_1.OptionalValidator(val);
32
+ static or = (validators) => new OrValidator_1.OrValidator(validators);
33
+ }
34
+ exports.v = v;
23
35
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +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"}
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,0DAA0E;AAC1E,kEAA2F;AAC3F,gEAA4E;AAC5E,kEAAqF;AAErF,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,gDAAgE;AAAvD,sGAAA,SAAS,OAAA;AAClB,4DAA6E;AAApE,kHAAA,eAAe,OAAA;AAExB,MAAa,CAAC;IACH,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,mCAAgB,EAAE,CAAC;IAE9C,MAAM,CAAC,GAAG,GAAG,CAAC,OAA8B,EAAE,EAAE,CAAC,IAAI,2BAAY,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,CAAC,MAAM,GAAG,CAAC,OAAiC,EAAE,EAAE,CAAC,IAAI,iCAAe,CAAC,OAAO,CAAC,CAAC;IAEpF,MAAM,CAAC,KAAK,GAAG,CAAI,IAAkB,EAAE,OAA+B,EAAE,EAAE,CAAC,IAAI,+BAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7G,MAAM,CAAC,IAAI,GAAG,CAAqB,YAAe,EAAE,EAAE,CAAC,IAAI,6BAAa,CAAC,YAAY,CAAC,CAAC;IACvF,MAAM,CAAC,MAAM,GAAG,CAAmB,MAA0B,EAAE,EAAE,CAAC,IAAI,iCAAe,CAAC,MAAM,CAAC,CAAC;IAC9F,MAAM,CAAC,KAAK,GAAG,CAA2B,UAA8B,EAAE,EAAE,CAAC,IAAI,+BAAc,CAAC,UAAU,CAAC,CAAC;IAE5G,MAAM,CAAC,MAAM,GAAG,CAA4B,OAAiC,EAAE,EAAE,CAAC,IAAI,iCAAe,CAAI,OAAO,CAAC,CAAC;IAElH,MAAM,CAAC,GAAG,GAAG,GAAM,EAAE,CAAC,IAAI,2BAAY,EAAK,CAAC;IAC5C,MAAM,CAAC,QAAQ,GAAG,CAAI,GAA4C,EAAE,EAAE,CAAC,IAAI,qCAAiB,CAAC,GAAG,CAAC,CAAC;IAClG,MAAM,CAAC,EAAE,GAAG,CAAI,UAA2B,EAAE,EAAE,CAAC,IAAI,yBAAW,CAAC,UAAU,CAAC,CAAC;;AAfvF,cAgBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@local901/validator",
3
- "version": "0.0.4",
3
+ "version": "0.1.0",
4
4
  "description": "Type validator for javascript and typescript",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -0,0 +1,16 @@
1
+ import type { ValidationError } from "../../errors/ValidationError";
2
+ import { Validator } from "../../Validator";
3
+ export interface ArrayValidatorOptions {
4
+ /** Minimum length of the array. */
5
+ min?: number;
6
+ /** Maximum length of the array. */
7
+ max?: number;
8
+ }
9
+ export declare class ArrayValidator<T> extends Validator<T[]> {
10
+ readonly item: Validator<T>;
11
+ private readonly options;
12
+ type: string;
13
+ constructor(item: Validator<T>, options?: ArrayValidatorOptions);
14
+ /** @inheritdoc */
15
+ validateReturn(input: unknown): ValidationError<T[]> | null;
16
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArrayValidator = void 0;
4
+ const ErrorType_1 = require("../../errors/ErrorType");
5
+ const Validator_1 = require("../../Validator");
6
+ class ArrayValidator extends Validator_1.Validator {
7
+ item;
8
+ options;
9
+ type = "array";
10
+ constructor(item, options = {}) {
11
+ super();
12
+ this.item = item;
13
+ this.options = options;
14
+ }
15
+ /** @inheritdoc */
16
+ validateReturn(input) {
17
+ // Check type
18
+ if (typeof input !== "object" || input === null || !Array.isArray(input)) {
19
+ return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "Has to be an array.");
20
+ }
21
+ // Check minimum length
22
+ if (this.options.min !== undefined && input.length < this.options.min) {
23
+ return this.createError(ErrorType_1.ErrorType.VALUE_SHORT, `Has to have a minimum length of ${this.options.min}`);
24
+ }
25
+ // Check maximum length
26
+ if (this.options.max !== undefined && input.length > this.options.max) {
27
+ return this.createError(ErrorType_1.ErrorType.VALUE_SHORT, `Has to have a maximum length of ${this.options.max}`);
28
+ }
29
+ // Check item type
30
+ let hasError = false;
31
+ const fields = input.map((item) => {
32
+ const result = this.item.validateReturn(item);
33
+ if (result !== null) {
34
+ hasError = true;
35
+ }
36
+ return result;
37
+ });
38
+ if (hasError) {
39
+ return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "One or more items are incorrect.", fields);
40
+ }
41
+ return null;
42
+ }
43
+ }
44
+ exports.ArrayValidator = ArrayValidator;
45
+ //# sourceMappingURL=ArrayValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArrayValidator.js","sourceRoot":"","sources":["../../../src/types/object/ArrayValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAA4C;AAS5C,MAAa,cAAkB,SAAQ,qBAAc;IAI7B;IACE;IAJN,IAAI,GAAG,OAAO,CAAC;IAE/B,YACoB,IAAkB,EAChB,UAAiC,EAAE;QAErD,KAAK,EAAE,CAAC;QAHQ,SAAI,GAAJ,IAAI,CAAc;QAChB,YAAO,GAAP,OAAO,CAA4B;IAGzD,CAAC;IAED,kBAAkB;IACF,cAAc,CAAC,KAAc;QACzC,aAAa;QACb,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvE,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,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,CAAA;QACzG,CAAC;QAED,uBAAuB;QACvB,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,CAAA;QACzG,CAAC;QAED,kBAAkB;QAClB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,MAAM,GAAqB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAChD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClB,QAAQ,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,IAAI,QAAQ,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,cAAc,EAAE,kCAAkC,EAAE,MAAM,CAAC,CAAC;QAClG,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AA1CD,wCA0CC"}
@@ -0,0 +1,11 @@
1
+ import type { ValidationError } from "../../errors/ValidationError";
2
+ import { Validator } from "../../Validator";
3
+ export type EnumValue = string | number;
4
+ export type EnumLike = Readonly<Record<string, EnumValue>>;
5
+ export declare class EnumValidator<T extends EnumLike | unknown[]> extends Validator<T[keyof T]> {
6
+ type: string;
7
+ private readonly enumValues;
8
+ constructor(enumInstance: T);
9
+ /** @inheritdoc */
10
+ validateReturn(input: unknown): ValidationError<T[keyof T]> | null;
11
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EnumValidator = void 0;
4
+ const ErrorType_1 = require("../../errors/ErrorType");
5
+ const Validator_1 = require("../../Validator");
6
+ class EnumValidator extends Validator_1.Validator {
7
+ type = "enum";
8
+ enumValues;
9
+ constructor(enumInstance) {
10
+ super();
11
+ this.enumValues = Object.values(enumInstance);
12
+ }
13
+ /** @inheritdoc */
14
+ validateReturn(input) {
15
+ // Check type
16
+ if (!this.enumValues.includes(input)) {
17
+ return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "Has to be an object.");
18
+ }
19
+ return null;
20
+ }
21
+ }
22
+ exports.EnumValidator = EnumValidator;
23
+ //# sourceMappingURL=EnumValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnumValidator.js","sourceRoot":"","sources":["../../../src/types/object/EnumValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAA4C;AAK5C,MAAa,aAA8C,SAAQ,qBAAqB;IACpE,IAAI,GAAG,MAAM,CAAC;IACb,UAAU,CAAY;IAEvC,YAAmB,YAAe;QAC9B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAClD,CAAC;IAED,kBAAkB;IACF,cAAc,CAAC,KAAc;QACzC,aAAa;QACb,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAlBD,sCAkBC"}
@@ -0,0 +1,9 @@
1
+ import type { ValidationError } from "../../errors/ValidationError";
2
+ import { Validator } from "../../Validator";
3
+ export type TupleValidators<T extends [...unknown[]]> = T extends [infer ITEM, ...infer ARR] ? [Validator<ITEM>, ...ARR extends never[] ? [] : TupleValidators<ARR>] : T extends ReadonlyArray<infer ARR> ? Array<Validator<ARR>> : never;
4
+ export declare class TupleValidator<T extends [...unknown[]]> extends Validator<T> {
5
+ readonly validators: TupleValidators<T>;
6
+ type: string;
7
+ constructor(validators: TupleValidators<T>);
8
+ validateReturn(input: unknown): ValidationError<T> | null;
9
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TupleValidator = void 0;
4
+ const ErrorType_1 = require("../../errors/ErrorType");
5
+ const Validator_1 = require("../../Validator");
6
+ class TupleValidator extends Validator_1.Validator {
7
+ validators;
8
+ type = "tuple";
9
+ constructor(validators) {
10
+ super();
11
+ this.validators = validators;
12
+ }
13
+ validateReturn(input) {
14
+ // Check type
15
+ if (typeof input !== "object" || !input || !Array.isArray(input)) {
16
+ return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "Has te be a tuple.");
17
+ }
18
+ // Check length
19
+ if (input.length !== this.validators.length) {
20
+ return this.createError(input.length < this.validators.length
21
+ ? ErrorType_1.ErrorType.VALUE_SHORT
22
+ : ErrorType_1.ErrorType.VALUE_LONG, `Has to have length of ${this.validators.length}`);
23
+ }
24
+ // Check items
25
+ let hasError = false;
26
+ const fields = this.validators.map((validator, index) => {
27
+ const result = validator.validateReturn(input[index]);
28
+ if (result) {
29
+ hasError = true;
30
+ }
31
+ return result;
32
+ });
33
+ if (hasError) {
34
+ return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "One or more items are incorrect.", fields);
35
+ }
36
+ return null;
37
+ }
38
+ }
39
+ exports.TupleValidator = TupleValidator;
40
+ //# sourceMappingURL=TupleValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TupleValidator.js","sourceRoot":"","sources":["../../../src/types/object/TupleValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAA4C;AAM5C,MAAa,cAAyC,SAAQ,qBAAY;IAGnC;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,aAAa;QACb,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/D,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;QAC5E,CAAC;QAED,eAAe;QACf,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,WAAW,CACnB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;gBACjC,CAAC,CAAC,qBAAS,CAAC,WAAW;gBACvB,CAAC,CAAC,qBAAS,CAAC,UAAU,EAC1B,yBAAyB,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CACpD,CAAC;QACN,CAAC;QAED,cAAc;QACd,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;YACpD,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACtD,IAAI,MAAM,EAAE,CAAC;gBACT,QAAQ,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC,CAAmB,CAAC;QACrB,IAAI,QAAQ,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,cAAc,EAAE,kCAAkC,EAAE,MAAM,CAAC,CAAC;QAClG,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAtCD,wCAsCC"}
@@ -10,10 +10,10 @@ export interface StringValidationOptions {
10
10
  /** Allowed values. (Will ignore all other options.) */
11
11
  enum?: string[];
12
12
  }
13
- export declare class stringValidator extends Validator<string> {
13
+ export declare class stringValidator<T extends string = string> extends Validator<T> {
14
14
  private readonly options;
15
15
  type: string;
16
16
  constructor(options?: StringValidationOptions);
17
17
  /** @inheritdoc */
18
- validateReturn(input: unknown): ValidationError<string> | null;
18
+ validateReturn(input: unknown): ValidationError<T> | null;
19
19
  }
@@ -1 +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"}
1
+ {"version":3,"file":"StringValidator.js","sourceRoot":"","sources":["../../../src/types/string/StringValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAA4C;AAa5C,MAAa,eAA2C,SAAQ,qBAAY;IAGpC;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 OrValidators<T> = ReadonlyArray<T extends unknown ? Validator<T> : never>;
4
+ export declare class OrValidator<T> extends Validator<T> {
5
+ readonly validators: OrValidators<T>;
6
+ type: string;
7
+ constructor(validators: OrValidators<T>);
8
+ validateReturn(input: unknown): ValidationError<T> | null;
9
+ }
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AnyOfValidator = void 0;
3
+ exports.OrValidator = void 0;
4
4
  const ErrorType_1 = require("../../errors/ErrorType");
5
5
  const Validator_1 = require("../../Validator");
6
- class AnyOfValidator extends Validator_1.Validator {
6
+ class OrValidator extends Validator_1.Validator {
7
7
  validators;
8
8
  type = "anyof";
9
9
  constructor(validators) {
@@ -23,5 +23,5 @@ class AnyOfValidator extends Validator_1.Validator {
23
23
  return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "Has to match at least one of the types.", errors);
24
24
  }
25
25
  }
26
- exports.AnyOfValidator = AnyOfValidator;
27
- //# sourceMappingURL=AnyOfValidator.js.map
26
+ exports.OrValidator = OrValidator;
27
+ //# sourceMappingURL=OrValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrValidator.js","sourceRoot":"","sources":["../../../src/types/util/OrValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAA4C;AAI5C,MAAa,WAAe,SAAQ,qBAAY;IAGT;IAFnB,IAAI,GAAG,OAAO,CAAC;IAE/B,YAAmC,UAA2B;QAC1D,KAAK,EAAE,CAAC;QADuB,eAAU,GAAV,UAAU,CAAiB;IAE9D,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,kCAoBC"}
@@ -1,9 +0,0 @@
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
- }
@@ -1 +0,0 @@
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"}