@local901/validator 0.3.1 → 0.4.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/errors/ErrorType.d.ts +1 -0
- package/errors/ErrorType.js +1 -0
- package/errors/ErrorType.js.map +1 -1
- package/errors/ValidationError.d.ts +7 -7
- package/errors/ValidationError.js +1 -1
- package/errors/ValidationError.js.map +1 -1
- package/index.d.ts +6 -4
- package/index.js +3 -3
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/types/object/ObjectValidator.d.ts +1 -1
- package/types/object/ObjectValidator.js +1 -1
- package/types/object/ObjectValidator.js.map +1 -1
- package/types/object/RecordValidator.d.ts +8 -7
- package/types/object/RecordValidator.js +11 -1
- package/types/object/RecordValidator.js.map +1 -1
- package/types/object/TupleValidator.d.ts +3 -2
- package/types/object/TupleValidator.js.map +1 -1
package/errors/ErrorType.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare const ErrorType: {
|
|
2
2
|
readonly INCORRECT_TYPE: "INCORRECT_TYPE";
|
|
3
3
|
readonly INCORRECT_FORMAT: "INCORRECT_FORMAT";
|
|
4
|
+
readonly INCORRECT_KEY: "INCORRECT_KEY";
|
|
4
5
|
readonly UNKNOWN_FIELD: "UNKNOWN_FIELD";
|
|
5
6
|
readonly NO_MATCH: "NO_MATCH";
|
|
6
7
|
readonly VALUE_BELOW: "VALUE_BELOW";
|
package/errors/ErrorType.js
CHANGED
package/errors/ErrorType.js.map
CHANGED
|
@@ -1 +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;
|
|
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;IACpC,aAAa,EAAE,eAAe;IAE9B,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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import type { ErrorValue } from "./ErrorType";
|
|
2
|
-
export type ErrorFields<T> = (T extends object ? T extends ReadonlyArray<infer I> ? Record<number, ValidationError<I
|
|
3
|
-
[K in keyof T]: ValidationError<T[K]
|
|
4
|
-
} : never) | Record<number, ValidationError<T
|
|
5
|
-
export type ErrorJsonFields<T> = (T extends object ? T extends ReadonlyArray<infer I> ? Record<number, ValidationJson<I
|
|
6
|
-
[K in keyof T]: ValidationJson<T[K]
|
|
7
|
-
} : never) | Record<number, ValidationJson<T
|
|
2
|
+
export type ErrorFields<T> = (T extends object ? T extends ReadonlyArray<infer I> ? Partial<Record<number, ValidationError<I>>> : Partial<{
|
|
3
|
+
[K in keyof T]: ValidationError<T[K]>;
|
|
4
|
+
}> : never) | Partial<Record<number, ValidationError<T>>>;
|
|
5
|
+
export type ErrorJsonFields<T> = (T extends object ? T extends ReadonlyArray<infer I> ? Partial<Record<number, ValidationJson<I>>> : Partial<{
|
|
6
|
+
[K in keyof T]: ValidationJson<T[K]>;
|
|
7
|
+
}> : never) | Partial<Record<number, ValidationJson<T>>>;
|
|
8
8
|
export type ValidationJson<T> = {
|
|
9
9
|
type: string;
|
|
10
10
|
error: ErrorValue;
|
|
11
11
|
message: string;
|
|
12
|
-
fields?: Record<string | number, ErrorJsonFields<T
|
|
12
|
+
fields?: Partial<Record<string | number, ErrorJsonFields<T>>>;
|
|
13
13
|
};
|
|
14
14
|
export declare class ValidationError<T extends unknown = unknown> extends Error {
|
|
15
15
|
private readonly _message;
|
|
@@ -18,7 +18,7 @@ class ValidationError extends Error {
|
|
|
18
18
|
toJson() {
|
|
19
19
|
let fields;
|
|
20
20
|
if (this.fields) {
|
|
21
|
-
fields = Object.fromEntries(Object.entries(this.fields).map(([key, error]) => [key, error
|
|
21
|
+
fields = Object.fromEntries(Object.entries(this.fields).map(([key, error]) => [key, error?.toJson()]));
|
|
22
22
|
}
|
|
23
23
|
return {
|
|
24
24
|
message: this._message,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationError.js","sourceRoot":"","sources":["../../src/errors/ValidationError.ts"],"names":[],"mappings":";;;AAyBA,MAAa,eAEX,SAAQ,KAAK;IACM,QAAQ,CAAS;IAClB,IAAI,CAAS;IACb,KAAK,CAAa;IAClB,MAAM,CAAkB;IAExC,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,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,
|
|
1
|
+
{"version":3,"file":"ValidationError.js","sourceRoot":"","sources":["../../src/errors/ValidationError.ts"],"names":[],"mappings":";;;AAyBA,MAAa,eAEX,SAAQ,KAAK;IACM,QAAQ,CAAS;IAClB,IAAI,CAAS;IACb,KAAK,CAAa;IAClB,MAAM,CAAkB;IAExC,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,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,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3G,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;AAhCD,0CAgCC"}
|
package/index.d.ts
CHANGED
|
@@ -6,9 +6,9 @@ import { Validator } from "./Validator";
|
|
|
6
6
|
import { type OrValidators } from "./types/util/OrValidator";
|
|
7
7
|
import { type ArrayValidatorOptions } from "./types/object/ArrayValidator";
|
|
8
8
|
import { type EnumLike } from "./types/object/EnumValidator";
|
|
9
|
-
import { type TupleValidators } from "./types/object/TupleValidator";
|
|
9
|
+
import { type TupleValidators, type TupleValidatorTypes } from "./types/object/TupleValidator";
|
|
10
10
|
import { type ConstructorType, type InstanceofValidationOptions } from "./types/util/InstanceofValidator";
|
|
11
|
-
import { type
|
|
11
|
+
import { type RecordFieldValidator, type RecordKeyValidator } from "./types/object/RecordValidator";
|
|
12
12
|
export { Validator } from "./Validator";
|
|
13
13
|
export { ErrorType, type ErrorValue } from "./errors/ErrorType";
|
|
14
14
|
export { ValidationError, type ErrorFields } from "./errors/ValidationError";
|
|
@@ -19,8 +19,10 @@ export declare class v {
|
|
|
19
19
|
static array<T>(item: Validator<T>, options?: ArrayValidatorOptions): Validator<T[]>;
|
|
20
20
|
static enum<T extends EnumLike>(enumInstance: T): Validator<T[keyof T]>;
|
|
21
21
|
static object<T extends object>(fields: FieldValidators<T>, options?: ObjectValidationOptions): Validator<T>;
|
|
22
|
-
static record<T extends
|
|
23
|
-
static
|
|
22
|
+
static record<T extends unknown, K = string | number | symbol>(field: Validator<T>, key?: Validator<K>): Validator<T>;
|
|
23
|
+
static record<T extends Record<string | number | symbol, unknown>>(field: RecordFieldValidator<T>, key?: RecordKeyValidator<T>): Validator<T>;
|
|
24
|
+
static tuple<T extends ReadonlyArray<Validator>>(...validators: T): Validator<TupleValidatorTypes<T>>;
|
|
25
|
+
static tuple<T extends ReadonlyArray<unknown>>(...validators: TupleValidators<T>): Validator<T>;
|
|
24
26
|
static string<T extends string = string>(options?: StringValidationOptions): Validator<T>;
|
|
25
27
|
static any<T>(): Validator<T>;
|
|
26
28
|
static instanceof<T>(instance: ConstructorType<T>, options?: InstanceofValidationOptions<T>): Validator<T>;
|
package/index.js
CHANGED
|
@@ -42,10 +42,10 @@ class v {
|
|
|
42
42
|
static object(fields, options) {
|
|
43
43
|
return new ObjectValidator_1.ObjectValidator(fields, options);
|
|
44
44
|
}
|
|
45
|
-
static record(field) {
|
|
46
|
-
return new RecordValidator_1.RecordValidator(field);
|
|
45
|
+
static record(field, key) {
|
|
46
|
+
return new RecordValidator_1.RecordValidator(field, key);
|
|
47
47
|
}
|
|
48
|
-
static tuple(validators) {
|
|
48
|
+
static tuple(...validators) {
|
|
49
49
|
return new TupleValidator_1.TupleValidator(validators);
|
|
50
50
|
}
|
|
51
51
|
// Strings
|
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,oEAAqH;AACrH,sEAAmE;AACnE,oEAA+F;AAE/F,4DAAyD;AACzD,0DAA0E;AAC1E,kEAA2F;AAC3F,gEAA4E;AAC5E,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,oEAAiE;AACjE,8DAAsF;AACtF,oEAA+F;AAC/F,oEAAqH;AACrH,sEAAmE;AACnE,oEAA+F;AAE/F,4DAAyD;AACzD,0DAA0E;AAC1E,kEAA2F;AAC3F,gEAA4E;AAC5E,kEAA+G;AAC/G,0EAA+H;AAC/H,oEAAqH;AAErH,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,gDAAgE;AAAvD,sGAAA,SAAS,OAAA;AAClB,4DAA6E;AAApE,kHAAA,eAAe,OAAA;AAExB,MAAa,CAAC;IACV,UAAU;IACH,MAAM,CAAC,OAAO;QACjB,OAAO,IAAI,mCAAgB,EAAE,CAAC;IAClC,CAAC;IAED,UAAU;IACH,MAAM,CAAC,GAAG,CAAC,OAA8B;QAC5C,OAAO,IAAI,2BAAY,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IACM,MAAM,CAAC,MAAM,CAAC,OAAiC;QAClD,OAAO,IAAI,iCAAe,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,UAAU;IACH,MAAM,CAAC,KAAK,CAAI,IAAkB,EAAE,OAA+B;QACtE,OAAO,IAAI,+BAAc,CAAI,IAAI,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IACM,MAAM,CAAC,IAAI,CAAqB,YAAe;QAClD,OAAO,IAAI,6BAAa,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;IACM,MAAM,CAAC,MAAM,CAAmB,MAA0B,EAAE,OAAiC;QAChG,OAAO,IAAI,iCAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAGM,MAAM,CAAC,MAAM,CAAsD,KAA8B,EAAE,GAA2B;QACjI,OAAO,IAAI,iCAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAGM,MAAM,CAAC,KAAK,CAAmC,GAAG,UAA8B;QACnF,OAAO,IAAI,+BAAc,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,UAAU;IACH,MAAM,CAAC,MAAM,CAA4B,OAAiC;QAC7E,OAAO,IAAI,iCAAe,CAAI,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,UAAU;IACH,MAAM,CAAC,GAAG;QACb,OAAO,IAAI,2BAAY,EAAK,CAAC;IACjC,CAAC;IACM,MAAM,CAAC,UAAU,CAAI,QAA4B,EAAE,OAAwC;QAC9F,OAAO,IAAI,yCAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAIM,MAAM,CAAC,QAAQ,CAAI,GAA4C,EAAE,IAA2B;QAC/F,OAAO,IAAI,qCAAiB,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IACM,MAAM,CAAC,EAAE,CAAI,UAA2B;QAC3C,OAAO,IAAI,yBAAW,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;CACJ;AAxDD,cAwDC"}
|
package/package.json
CHANGED
|
@@ -28,7 +28,7 @@ class ObjectValidator extends Validator_1.Validator {
|
|
|
28
28
|
return [key, result ?? undefined];
|
|
29
29
|
}).filter(([, error]) => !!error));
|
|
30
30
|
// Check for excess keys.
|
|
31
|
-
if (!this.options.additionalProperties) {
|
|
31
|
+
if (!(this.options.additionalProperties ?? ("window" in globalThis))) {
|
|
32
32
|
const fieldKeys = Object.keys(this.fields);
|
|
33
33
|
const inputKeys = Object.keys(input);
|
|
34
34
|
const extraKeys = inputKeys.filter((k) => !fieldKeys.includes(k));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectValidator.js","sourceRoot":"","sources":["../../../src/types/object/ObjectValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAAkE;AAelE,MAAa,eAAkC,SAAQ,qBAAY;IAG5B;IAA6C;IAFhE,IAAI,GAAG,QAAQ,CAAC;IAEhC,YAAmC,MAA0B,EAAmB,UAAmC,EAAE;QACjH,KAAK,EAAE,CAAC;QADuB,WAAM,GAAN,MAAM,CAAoB;QAAmB,YAAO,GAAP,OAAO,CAA8B;IAErH,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,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,yBAAyB;QACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ObjectValidator.js","sourceRoot":"","sources":["../../../src/types/object/ObjectValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAAkE;AAelE,MAAa,eAAkC,SAAQ,qBAAY;IAG5B;IAA6C;IAFhE,IAAI,GAAG,QAAQ,CAAC;IAEhC,YAAmC,MAA0B,EAAmB,UAAmC,EAAE;QACjH,KAAK,EAAE,CAAC;QADuB,WAAM,GAAN,MAAM,CAAoB;QAAmB,YAAO,GAAP,OAAO,CAA8B;IAErH,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,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,yBAAyB;QACzB,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC;YACnE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAElE,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;QACL,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,cAAc,EAAE,mCAAmC,EAAE,MAAM,CAAC,CAAC;QACnG,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kBAAkB;IACC,MAAM;QACrB,OAAO;YACH,GAAG,IAAI,CAAC,OAAO;YACf,UAAU,EAAE,MAAM,CAAC,WAAW,CAC1B,MAAM,CAAC,OAAO,CAAY,IAAI,CAAC,MAAM,CAAC;iBACjC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAChE;SACJ,CAAC;IACN,CAAC;CACJ;AAzDD,0CAyDC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ValidationError } from "../../errors/ValidationError";
|
|
2
2
|
import { Validator, type ValidatorConfig } from "../../Validator";
|
|
3
|
-
export type
|
|
4
|
-
export type
|
|
5
|
-
export declare class RecordValidator<
|
|
6
|
-
readonly field:
|
|
3
|
+
export type RecordFieldValidator<R extends Record<string | number | symbol, unknown>> = R extends Record<string | number | symbol, infer FIELD> ? Validator<FIELD> : never;
|
|
4
|
+
export type RecordKeyValidator<R extends Record<string | number | symbol, unknown>> = R extends Record<infer KEY, unknown> ? Validator<KEY> : never;
|
|
5
|
+
export declare class RecordValidator<R extends Record<string | number | symbol, unknown>> extends Validator<R> {
|
|
6
|
+
readonly field: RecordFieldValidator<R>;
|
|
7
|
+
readonly key?: RecordKeyValidator<R> | undefined;
|
|
7
8
|
type: string;
|
|
8
|
-
constructor(field:
|
|
9
|
-
validateReturn(input: unknown): ValidationError<
|
|
9
|
+
constructor(field: RecordFieldValidator<R>, key?: RecordKeyValidator<R> | undefined);
|
|
10
|
+
validateReturn(input: unknown): ValidationError<R> | null;
|
|
10
11
|
/** @inheritdoc */
|
|
11
12
|
protected config(): Omit<ValidatorConfig, "type">;
|
|
12
13
|
}
|
|
@@ -2,13 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RecordValidator = void 0;
|
|
4
4
|
const ErrorType_1 = require("../../errors/ErrorType");
|
|
5
|
+
const ValidationError_1 = require("../../errors/ValidationError");
|
|
5
6
|
const Validator_1 = require("../../Validator");
|
|
6
7
|
class RecordValidator extends Validator_1.Validator {
|
|
7
8
|
field;
|
|
9
|
+
key;
|
|
8
10
|
type = "record";
|
|
9
|
-
constructor(field) {
|
|
11
|
+
constructor(field, key) {
|
|
10
12
|
super();
|
|
11
13
|
this.field = field;
|
|
14
|
+
this.key = key;
|
|
12
15
|
}
|
|
13
16
|
validateReturn(input) {
|
|
14
17
|
// Check type
|
|
@@ -18,6 +21,13 @@ class RecordValidator extends Validator_1.Validator {
|
|
|
18
21
|
// Check field types
|
|
19
22
|
let hasError = false;
|
|
20
23
|
const fields = Object.fromEntries(Object.entries(input).map(([key, value]) => {
|
|
24
|
+
if (this.key) {
|
|
25
|
+
const keyResult = this.key.validateReturn(key);
|
|
26
|
+
if (keyResult !== null) {
|
|
27
|
+
hasError = true;
|
|
28
|
+
return [key, new ValidationError_1.ValidationError(this.type, ErrorType_1.ErrorType.INCORRECT_KEY, "Invalid key format/type.", { key: keyResult })];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
21
31
|
const result = this.field.validateReturn(value);
|
|
22
32
|
if (result !== null) {
|
|
23
33
|
hasError = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordValidator.js","sourceRoot":"","sources":["../../../src/types/object/RecordValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;
|
|
1
|
+
{"version":3,"file":"RecordValidator.js","sourceRoot":"","sources":["../../../src/types/object/RecordValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AACnD,kEAA4E;AAC5E,+CAAkE;AAUlE,MAAa,eAAqE,SAAQ,qBAAY;IAI9E;IACA;IAJJ,IAAI,GAAG,QAAQ,CAAC;IAEhC,YACoB,KAA8B,EAC9B,GAA2B;QAE3C,KAAK,EAAE,CAAC;QAHQ,UAAK,GAAL,KAAK,CAAyB;QAC9B,QAAG,GAAH,GAAG,CAAwB;IAG/C,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,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACX,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAC/C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;oBACrB,QAAQ,GAAG,IAAI,CAAC;oBAChB,OAAO,CAAC,GAAG,EAAE,IAAI,iCAAe,CAAoC,IAAI,CAAC,IAAI,EAAE,qBAAS,CAAC,aAAa,EAAE,0BAA0B,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC7J,CAAC;YACL,CAAC;YACD,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;IAED,kBAAkB;IACC,MAAM;QACrB,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;SAChC,CAAC;IACN,CAAC;CACJ;AA9CD,0CA8CC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { ValidationError } from "../../errors/ValidationError";
|
|
2
2
|
import { Validator, type ValidatorConfig } from "../../Validator";
|
|
3
|
-
export type TupleValidators<T extends
|
|
4
|
-
export
|
|
3
|
+
export type TupleValidators<T extends readonly unknown[]> = T extends [infer ITEM, ...infer ARR] ? [Validator<ITEM>, ...ARR extends never[] ? [] : TupleValidators<ARR>] : T extends ReadonlyArray<infer ARR> ? ARR extends never ? never : ReadonlyArray<Validator<ARR>> : never;
|
|
4
|
+
export type TupleValidatorTypes<T extends readonly Validator[]> = T extends [Validator<infer ITEM>, ...infer ARR] ? [ITEM, ...ARR extends never[] ? [] : TupleValidatorTypes<ARR>] : T extends ReadonlyArray<Validator<infer ITEM>> ? ITEM : never;
|
|
5
|
+
export declare class TupleValidator<T extends readonly unknown[]> extends Validator<T> {
|
|
5
6
|
readonly validators: TupleValidators<T>;
|
|
6
7
|
type: string;
|
|
7
8
|
constructor(validators: TupleValidators<T>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TupleValidator.js","sourceRoot":"","sources":["../../../src/types/object/TupleValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAAkE;
|
|
1
|
+
{"version":3,"file":"TupleValidator.js","sourceRoot":"","sources":["../../../src/types/object/TupleValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAAkE;AAalE,MAAa,cAA6C,SAAQ,qBAAY;IAGvC;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,GAAG,CACrD,CAAC;QACN,CAAC;QAED,cAAc;QACd,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;YACvE,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,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,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;IAED,kBAAkB;IACC,MAAM;QACrB,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;SACnE,CAAC;IACN,CAAC;CACJ;AA7CD,wCA6CC"}
|