@local901/validator 0.3.2 → 0.4.1

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 CHANGED
@@ -30,13 +30,6 @@ export declare abstract class Validator<T = unknown> {
30
30
  * @returns True when input is valid, else False.
31
31
  */
32
32
  validate(input: unknown): input is T;
33
- /**
34
- * Validate input.
35
- *
36
- * @param input Input value to validate.
37
- * @throws ValidationError When input is invalid.
38
- */
39
- validateOrThrow<TYPE extends T = T>(input: unknown): asserts input is TYPE;
40
33
  /**
41
34
  * Type narrow input using the validation result.
42
35
  *
package/Validator.js CHANGED
@@ -15,19 +15,6 @@ class Validator {
15
15
  validate(input) {
16
16
  return !this.validateReturn(input);
17
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
18
  /**
32
19
  * Type narrow input using the validation result.
33
20
  *
package/Validator.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Validator.js","sourceRoot":"","sources":["../src/Validator.ts"],"names":[],"mappings":";;;AACA,8DAAwE;AAqBxE,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,CAAqB,KAAc;QACrD,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;IASD;;;;OAIG;IACI,SAAS;QACZ,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,IAAI,CAAC,MAAM,EAAE;SACnB,CAAC;IACN,CAAC;CACJ;AAnED,8BAmEC"}
1
+ {"version":3,"file":"Validator.js","sourceRoot":"","sources":["../src/Validator.ts"],"names":[],"mappings":";;;AACA,8DAAwE;AAqBxE,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;IAED;;;;;;OAMG;IACI,cAAc,CAAC,MAAe,EAAE,MAAiC;QACpE,OAAO,CAAC,MAAM,CAAC;IACnB,CAAC;IASD;;;;OAIG;IACI,SAAS;QACZ,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,IAAI,CAAC,MAAM,EAAE;SACnB,CAAC;IACN,CAAC;CACJ;AAtDD,8BAsDC"}
@@ -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";
@@ -4,6 +4,7 @@ exports.ErrorType = void 0;
4
4
  exports.ErrorType = {
5
5
  INCORRECT_TYPE: "INCORRECT_TYPE",
6
6
  INCORRECT_FORMAT: "INCORRECT_FORMAT",
7
+ INCORRECT_KEY: "INCORRECT_KEY",
7
8
  UNKNOWN_FIELD: "UNKNOWN_FIELD",
8
9
  NO_MATCH: "NO_MATCH",
9
10
  VALUE_BELOW: "VALUE_BELOW",
@@ -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;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"}
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"}
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 RecordType, type RecordTypeValidator } from "./types/object/RecordValidator";
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 RecordType>(field: RecordTypeValidator<T>): Validator<T>;
23
- static tuple<T extends [...unknown[]]>(validators: TupleValidators<T>): Validator<T>;
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>;
@@ -28,4 +30,5 @@ export declare class v {
28
30
  static optional<T>(val: Validator<Exclude<T, undefined | null>>, type: "undefined"): Validator<T | undefined>;
29
31
  static optional<T>(val: Validator<Exclude<T, undefined | null>>, type: "null"): Validator<T | null>;
30
32
  static or<T>(validators: OrValidators<T>): Validator<T>;
33
+ static validateOrThrow<T>(validator: Validator<T>, input: unknown): asserts input is T;
31
34
  }
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
@@ -65,6 +65,12 @@ class v {
65
65
  static or(validators) {
66
66
  return new OrValidator_1.OrValidator(validators);
67
67
  }
68
+ static validateOrThrow(validator, input) {
69
+ const validationResult = validator.validateReturn(input);
70
+ if (!validator.validateResult(input, validationResult)) {
71
+ throw validationResult;
72
+ }
73
+ }
68
74
  }
69
75
  exports.v = v;
70
76
  //# 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,oEAAqH;AACrH,sEAAmE;AACnE,oEAA+F;AAE/F,4DAAyD;AACzD,0DAA0E;AAC1E,kEAA2F;AAC3F,gEAA4E;AAC5E,kEAAqF;AACrF,0EAA+H;AAC/H,oEAA4G;AAE5G,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;IACM,MAAM,CAAC,MAAM,CAAuB,KAA6B;QACpE,OAAO,IAAI,iCAAe,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IACM,MAAM,CAAC,KAAK,CAA2B,UAA8B;QACxE,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;AApDD,cAoDC"}
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;IAEM,MAAM,CAAC,eAAe,CAAI,SAAuB,EAAE,KAAc;QACpE,MAAM,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC;YACrD,MAAM,gBAAgB,CAAC;QAC3B,CAAC;IACL,CAAC;CACJ;AA/DD,cA+DC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@local901/validator",
3
- "version": "0.3.2",
3
+ "version": "0.4.1",
4
4
  "description": "Type validator for javascript and typescript",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -7,7 +7,7 @@ export type ObjectValidationOptions = {
7
7
  /**
8
8
  * Are additional properties allowed
9
9
  *
10
- * @default false
10
+ * @default false in node true in browser
11
11
  */
12
12
  additionalProperties?: boolean;
13
13
  };
@@ -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;YACrC,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
+ {"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 type { ValidationError } from "../../errors/ValidationError";
1
+ import { ValidationError } from "../../errors/ValidationError";
2
2
  import { Validator, type ValidatorConfig } from "../../Validator";
3
- export type RecordType<T = unknown> = Record<string | number | symbol, T>;
4
- export type RecordTypeValidator<T extends RecordType> = T extends RecordType<infer FIELD> ? Validator<FIELD> : never;
5
- export declare class RecordValidator<T extends Record<string | number | symbol, unknown>> extends Validator<T> {
6
- readonly field: RecordTypeValidator<T>;
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: RecordTypeValidator<T>);
9
- validateReturn(input: unknown): ValidationError<T> | null;
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;AAEnD,+CAAkE;AAQlE,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;IAED,kBAAkB;IACC,MAAM;QACrB,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;SAChC,CAAC;IACN,CAAC;CACJ;AApCD,0CAoCC"}
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 [...unknown[]]> = T extends [infer ITEM, ...infer ARR] ? [Validator<ITEM>, ...ARR extends never[] ? [] : TupleValidators<ARR>] : T extends ReadonlyArray<infer ARR> ? ReadonlyArray<Validator<ARR>> : never;
4
- export declare class TupleValidator<T extends [...unknown[]]> extends Validator<T> {
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;AAMlE,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,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"}
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"}