@local901/validator 0.2.7 → 0.2.9
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/errors/ValidationError.d.ts +13 -0
- package/errors/ValidationError.js +21 -0
- package/errors/ValidationError.js.map +1 -1
- package/package.json +7 -3
- package/types/number/IntValidator.js +1 -1
- package/types/number/IntValidator.js.map +1 -1
- package/types/number/NumberValidator.js +1 -1
- package/types/number/NumberValidator.js.map +1 -1
- package/types/object/EnumValidator.js +1 -1
- package/types/object/EnumValidator.js.map +1 -1
- package/types/object/ObjectValidator.d.ts +1 -1
- package/types/object/ObjectValidator.js +4 -2
- package/types/object/ObjectValidator.js.map +1 -1
- package/types/object/RecordValidator.js +2 -2
- package/types/object/RecordValidator.js.map +1 -1
- package/types/object/TupleValidator.d.ts +1 -1
- package/types/string/StringValidator.d.ts +1 -1
- package/types/string/StringValidator.js +5 -3
- package/types/string/StringValidator.js.map +1 -1
- package/types/util/OrValidator.d.ts +1 -1
|
@@ -4,10 +4,23 @@ type ArrayError<T extends ReadonlyArray<unknown>> = T extends [infer _ITEM, ...i
|
|
|
4
4
|
export type ErrorFields<T> = (T extends object ? T extends readonly unknown[] ? ArrayError<T> : {
|
|
5
5
|
[K in keyof T]: ValidationError<T[K]> | undefined;
|
|
6
6
|
} : never) | Record<number, ValidationError<T>>;
|
|
7
|
+
type TupleErrorJson<T extends ReadonlyArray<unknown>> = T extends [infer ITEM, ...infer ARR] ? [ValidationJson<ITEM> | null, ...ARR extends never[] ? [] : TupleErrorJson<ARR>] : never;
|
|
8
|
+
type ArrayErrorJson<T extends ReadonlyArray<unknown>> = T extends [infer _ITEM, ...infer _ARR] ? TupleErrorJson<T> : T extends ReadonlyArray<infer ARR> ? Record<number, ValidationJson<ARR> | null> : never;
|
|
9
|
+
export type ErrorJsonFields<T> = (T extends object ? T extends readonly unknown[] ? ArrayErrorJson<T> : {
|
|
10
|
+
[K in keyof T]: ValidationJson<T[K]> | undefined;
|
|
11
|
+
} : never) | Record<number, ValidationJson<T>>;
|
|
12
|
+
export type ValidationJson<T> = {
|
|
13
|
+
type: string;
|
|
14
|
+
error: ErrorValue;
|
|
15
|
+
message: string;
|
|
16
|
+
fields?: ErrorJsonFields<T>;
|
|
17
|
+
};
|
|
7
18
|
export declare class ValidationError<T extends unknown = unknown> extends Error {
|
|
19
|
+
private readonly _message;
|
|
8
20
|
readonly type: string;
|
|
9
21
|
readonly error: ErrorValue;
|
|
10
22
|
readonly fields?: ErrorFields<T>;
|
|
11
23
|
constructor(type: string, error: ErrorValue, message: string, fields?: ErrorFields<T>);
|
|
24
|
+
toJson(): ValidationJson<T>;
|
|
12
25
|
}
|
|
13
26
|
export {};
|
|
@@ -2,14 +2,35 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ValidationError = void 0;
|
|
4
4
|
class ValidationError extends Error {
|
|
5
|
+
_message;
|
|
5
6
|
type;
|
|
6
7
|
error;
|
|
7
8
|
fields;
|
|
8
9
|
constructor(type, error, message, fields) {
|
|
9
10
|
super(message);
|
|
11
|
+
this.name = "ValidationError";
|
|
10
12
|
this.type = type;
|
|
11
13
|
this.error = error;
|
|
12
14
|
this.fields = fields;
|
|
15
|
+
this._message = this.message;
|
|
16
|
+
this.message = JSON.stringify(this.toJson());
|
|
17
|
+
}
|
|
18
|
+
toJson() {
|
|
19
|
+
let fields;
|
|
20
|
+
if (this.fields) {
|
|
21
|
+
if (Array.isArray(this.fields)) {
|
|
22
|
+
fields = this.fields.map((error) => error?.toJson());
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
fields = Object.fromEntries(Object.entries(this.fields).map(([key, error]) => [key, error.toJson()]));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
message: this._message,
|
|
30
|
+
type: this.type,
|
|
31
|
+
error: this.error,
|
|
32
|
+
fields,
|
|
33
|
+
};
|
|
13
34
|
}
|
|
14
35
|
}
|
|
15
36
|
exports.ValidationError = ValidationError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationError.js","sourceRoot":"","sources":["../../src/errors/ValidationError.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ValidationError.js","sourceRoot":"","sources":["../../src/errors/ValidationError.ts"],"names":[],"mappings":";;;AAyCA,MAAa,eAEX,SAAQ,KAAK;IACM,QAAQ,CAAS;IAClB,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,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IAEM,MAAM;QACT,IAAI,MAAsC,CAAC;QAE3C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7B,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACJ,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1G,CAAC;QACL,CAAC;QAED,OAAO;YACH,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM;SACT,CAAA;IACL,CAAC;CACJ;AApCD,0CAoCC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@local901/validator",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.9",
|
|
4
4
|
"description": "Type validator for javascript and typescript",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "tsc",
|
|
8
|
-
"test": "
|
|
8
|
+
"test": "vitest run",
|
|
9
|
+
"test:cover": "vitest run --coverage",
|
|
10
|
+
"test:watch": "vitest"
|
|
9
11
|
},
|
|
10
12
|
"repository": {
|
|
11
13
|
"type": "git",
|
|
@@ -23,6 +25,8 @@
|
|
|
23
25
|
"homepage": "https://github.com/Local901/js-validator#readme",
|
|
24
26
|
"devDependencies": {
|
|
25
27
|
"@types/node": "^24.0.12",
|
|
26
|
-
"
|
|
28
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
29
|
+
"typescript": "^5.8.3",
|
|
30
|
+
"vitest": "^3.2.4"
|
|
27
31
|
}
|
|
28
32
|
}
|
|
@@ -13,7 +13,7 @@ class IntValidator extends Validator_1.Validator {
|
|
|
13
13
|
/** @inheritdoc */
|
|
14
14
|
validateReturn(input) {
|
|
15
15
|
// Type check.
|
|
16
|
-
if (typeof input !== "number" || Math.floor(input) !== input) {
|
|
16
|
+
if (typeof input !== "number" || Number.isNaN(input) || Math.floor(input) !== input) {
|
|
17
17
|
return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "Has to be a int.");
|
|
18
18
|
}
|
|
19
19
|
// Minimum value check
|
|
@@ -1 +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;
|
|
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,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;YAClF,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,GAAG,CAAC,CAAA;QACvG,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,GAAG,CAAC,CAAA;QACvG,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAzBD,oCAyBC"}
|
|
@@ -13,7 +13,7 @@ class NumberValidator extends Validator_1.Validator {
|
|
|
13
13
|
/** @inheritdoc */
|
|
14
14
|
validateReturn(input) {
|
|
15
15
|
// Type check.
|
|
16
|
-
if (typeof input !== "number") {
|
|
16
|
+
if (typeof input !== "number" || Number.isNaN(input)) {
|
|
17
17
|
return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "Has to be a number.");
|
|
18
18
|
}
|
|
19
19
|
// Minimum value check.
|
|
@@ -1 +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;
|
|
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,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACnD,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,GAAG,CACxG,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,GAAG,CACxG,CAAC;QACN,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AA/BD,0CA+BC"}
|
|
@@ -14,7 +14,7 @@ class EnumValidator extends Validator_1.Validator {
|
|
|
14
14
|
validateReturn(input) {
|
|
15
15
|
// Check type
|
|
16
16
|
if (!this.enumValues.includes(input)) {
|
|
17
|
-
return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "Has to be an
|
|
17
|
+
return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "Has to be an enum.");
|
|
18
18
|
}
|
|
19
19
|
return null;
|
|
20
20
|
}
|
|
@@ -1 +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,
|
|
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,oBAAoB,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAlBD,sCAkBC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ValidationError } from "../../errors/ValidationError";
|
|
2
2
|
import { Validator } from "../../Validator";
|
|
3
3
|
export type FieldValidators<T extends object> = {
|
|
4
|
-
[K in keyof T]
|
|
4
|
+
[K in keyof T]-?: Validator<T[K]>;
|
|
5
5
|
};
|
|
6
6
|
export declare class ObjectValidator<T extends object> extends Validator<T> {
|
|
7
7
|
readonly fields: FieldValidators<T>;
|
|
@@ -28,10 +28,12 @@ class ObjectValidator extends Validator_1.Validator {
|
|
|
28
28
|
hasError = true;
|
|
29
29
|
}
|
|
30
30
|
return [key, result ?? undefined];
|
|
31
|
-
}));
|
|
31
|
+
}).filter(([, error]) => !!error));
|
|
32
32
|
if (hasError || extraKeys.length) {
|
|
33
33
|
if (extraKeys.length) {
|
|
34
|
-
return this.createError(ErrorType_1.ErrorType.UNKNOWN_FIELD, `No extra keys allowed. Found [${extraKeys.join(", ")}].`, hasError
|
|
34
|
+
return this.createError(ErrorType_1.ErrorType.UNKNOWN_FIELD, `No extra keys allowed. Found [${extraKeys.join(", ")}].`, hasError
|
|
35
|
+
? fields
|
|
36
|
+
: undefined);
|
|
35
37
|
}
|
|
36
38
|
return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "One or more fields are incorrect.", fields);
|
|
37
39
|
}
|
|
@@ -1 +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;
|
|
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,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAmB,CAAC;QAErD,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,IAAI,EACzD,QAAQ;oBACJ,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,SAAS,CAClB,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;CACJ;AA3CD,0CA2CC"}
|
|
@@ -12,7 +12,7 @@ class RecordValidator extends Validator_1.Validator {
|
|
|
12
12
|
}
|
|
13
13
|
validateReturn(input) {
|
|
14
14
|
// Check type
|
|
15
|
-
if (typeof input !== "object" || input === null) {
|
|
15
|
+
if (typeof input !== "object" || input === null || Array.isArray(input)) {
|
|
16
16
|
return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "Has to be an record.");
|
|
17
17
|
}
|
|
18
18
|
// Check field types
|
|
@@ -23,7 +23,7 @@ class RecordValidator extends Validator_1.Validator {
|
|
|
23
23
|
hasError = true;
|
|
24
24
|
}
|
|
25
25
|
return [key, result ?? undefined];
|
|
26
|
-
}));
|
|
26
|
+
}).filter(([, error]) => !!error));
|
|
27
27
|
if (hasError) {
|
|
28
28
|
return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "One or more fields are incorrect.", fields);
|
|
29
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordValidator.js","sourceRoot":"","sources":["../../../src/types/object/RecordValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAA4C;AAQ5C,MAAa,eAAqE,SAAQ,qBAAY;IAG/D;IAFnB,IAAI,GAAG,QAAQ,CAAC;IAEhC,YAAmC,KAA6B;QAC5D,KAAK,EAAE,CAAC;QADuB,UAAK,GAAL,KAAK,CAAwB;IAEhE,CAAC;IAEe,cAAc,CAAC,KAAc;QACzC,aAAa;QACb,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"RecordValidator.js","sourceRoot":"","sources":["../../../src/types/object/RecordValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAA4C;AAQ5C,MAAa,eAAqE,SAAQ,qBAAY;IAG/D;IAFnB,IAAI,GAAG,QAAQ,CAAC;IAEhC,YAAmC,KAA6B;QAC5D,KAAK,EAAE,CAAC;QADuB,UAAK,GAAL,KAAK,CAAwB;IAEhE,CAAC;IAEe,cAAc,CAAC,KAAc;QACzC,aAAa;QACb,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;QAC9E,CAAC;QAED,oBAAoB;QACpB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACzE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAChD,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,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAmB,CAAC;QAErD,IAAI,QAAQ,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,cAAc,EAAE,mCAAmC,EAAE,MAAM,CAAC,CAAC;QACnG,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AA7BD,0CA6BC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ValidationError } from "../../errors/ValidationError";
|
|
2
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> ?
|
|
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> ? ReadonlyArray<Validator<ARR>> : never;
|
|
4
4
|
export declare class TupleValidator<T extends [...unknown[]]> extends Validator<T> {
|
|
5
5
|
readonly validators: TupleValidators<T>;
|
|
6
6
|
type: string;
|
|
@@ -6,7 +6,7 @@ export interface StringValidationOptions {
|
|
|
6
6
|
/** Maximum length of the string. */
|
|
7
7
|
max?: number;
|
|
8
8
|
/** The regex the value has to match. */
|
|
9
|
-
regex?: RegExp;
|
|
9
|
+
regex?: RegExp | string;
|
|
10
10
|
/** Allowed values. (Will ignore all other options.) */
|
|
11
11
|
enum?: string[];
|
|
12
12
|
}
|
|
@@ -18,7 +18,7 @@ class stringValidator extends Validator_1.Validator {
|
|
|
18
18
|
}
|
|
19
19
|
// Enum Check.
|
|
20
20
|
if (this.options.enum) {
|
|
21
|
-
if (
|
|
21
|
+
if (this.options.enum.includes(input)) {
|
|
22
22
|
return null;
|
|
23
23
|
}
|
|
24
24
|
return this.createError(ErrorType_1.ErrorType.NO_MATCH, `Has to match one of the known values [${this.options.enum.join(", ")}].`);
|
|
@@ -32,8 +32,10 @@ class stringValidator extends Validator_1.Validator {
|
|
|
32
32
|
return this.createError(ErrorType_1.ErrorType.VALUE_LONG, `Has to have a maximum length of ${this.options.max}.`);
|
|
33
33
|
}
|
|
34
34
|
// Regex format check.
|
|
35
|
-
if (this.options.regex &&
|
|
36
|
-
return this.createError(ErrorType_1.ErrorType.INCORRECT_FORMAT, `Has to match format '${this.options.regex
|
|
35
|
+
if (this.options.regex && input.match(this.options.regex)?.[0] !== input) {
|
|
36
|
+
return this.createError(ErrorType_1.ErrorType.INCORRECT_FORMAT, `Has to match format '${typeof this.options.regex === "string"
|
|
37
|
+
? this.options.regex
|
|
38
|
+
: this.options.regex.source}'.`);
|
|
37
39
|
}
|
|
38
40
|
return null;
|
|
39
41
|
}
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,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,IAAI,CAC5E,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,GAAG,CAAC,CAAC;QAC3G,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,GAAG,CAAC,CAAC;QAC1G,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;YACvE,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,gBAAgB,EAAE,wBAChD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ;gBAClC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;gBACpB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MACzB,IAAI,CAAC,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AA7CD,0CA6CC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ValidationError } from "../../errors/ValidationError";
|
|
2
2
|
import { Validator } from "../../Validator";
|
|
3
|
-
export type OrValidators<T> = ReadonlyArray<
|
|
3
|
+
export type OrValidators<T> = ReadonlyArray<Validator<T>>;
|
|
4
4
|
export declare class OrValidator<T> extends Validator<T> {
|
|
5
5
|
readonly validators: OrValidators<T>;
|
|
6
6
|
type: string;
|