@local901/validator 0.2.1 → 0.2.2

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/index.d.ts CHANGED
@@ -11,6 +11,7 @@ import { ArrayValidator, type ArrayValidatorOptions } from "./types/object/Array
11
11
  import { EnumValidator, type EnumLike } from "./types/object/EnumValidator";
12
12
  import { TupleValidator, type TupleValidators } from "./types/object/TupleValidator";
13
13
  import { InstanceofValidator, type ConstructorType, type InstanceofValidationOptions } from "./types/util/InstanceofValidator";
14
+ import { RecordValidator, type RecordType, type RecordTypeValidator } from "./types/object/RecordValidator";
14
15
  export { Validator } from "./Validator";
15
16
  export { ErrorType, type ErrorValue } from "./errors/ErrorType";
16
17
  export { ValidationError, type ErrorFields } from "./errors/ValidationError";
@@ -21,6 +22,7 @@ export declare class v {
21
22
  static array: <T>(item: Validator<T>, options?: ArrayValidatorOptions) => ArrayValidator<T>;
22
23
  static enum: <T extends EnumLike>(enumInstance: T) => EnumValidator<T>;
23
24
  static object: <T extends object>(fields: FieldValidators<T>) => ObjectValidator<T>;
25
+ static record: <T extends RecordType>(field: RecordTypeValidator<T>) => RecordValidator<T>;
24
26
  static tuple: <T extends [...unknown[]]>(validators: TupleValidators<T>) => TupleValidator<T>;
25
27
  static string: <T extends string = string>(options?: StringValidationOptions) => stringValidator<T>;
26
28
  static any: <T>() => AnyValidator<T>;
package/index.js CHANGED
@@ -13,6 +13,7 @@ const ArrayValidator_1 = require("./types/object/ArrayValidator");
13
13
  const EnumValidator_1 = require("./types/object/EnumValidator");
14
14
  const TupleValidator_1 = require("./types/object/TupleValidator");
15
15
  const InstanceofValidator_1 = require("./types/util/InstanceofValidator");
16
+ const RecordValidator_1 = require("./types/object/RecordValidator");
16
17
  var Validator_1 = require("./Validator");
17
18
  Object.defineProperty(exports, "Validator", { enumerable: true, get: function () { return Validator_1.Validator; } });
18
19
  var ErrorType_1 = require("./errors/ErrorType");
@@ -26,6 +27,7 @@ class v {
26
27
  static array = (item, options) => new ArrayValidator_1.ArrayValidator(item, options);
27
28
  static enum = (enumInstance) => new EnumValidator_1.EnumValidator(enumInstance);
28
29
  static object = (fields) => new ObjectValidator_1.ObjectValidator(fields);
30
+ static record = (field) => new RecordValidator_1.RecordValidator(field);
29
31
  static tuple = (validators) => new TupleValidator_1.TupleValidator(validators);
30
32
  static string = (options) => new StringValidator_1.stringValidator(options);
31
33
  static any = () => new AnyValidator_1.AnyValidator();
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,0DAA0E;AAC1E,kEAA2F;AAC3F,gEAA4E;AAC5E,kEAAqF;AACrF,0EAA+H;AAE/H,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,UAAU,GAAG,CAAI,QAA4B,EAAE,OAAuC,EAAE,EAAE,CAAC,IAAI,yCAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7I,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;;AAhBvF,cAiBC"}
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;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;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,MAAM,GAAG,CAAuB,KAA6B,EAAE,EAAE,CAAC,IAAI,iCAAe,CAAC,KAAK,CAAC,CAAC;IACpG,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,UAAU,GAAG,CAAI,QAA4B,EAAE,OAAuC,EAAE,EAAE,CAAC,IAAI,yCAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7I,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;;AAjBvF,cAkBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@local901/validator",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "Type validator for javascript and typescript",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -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;QAEtB,IAAI,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC,WAAW,CACnB,qBAAS,CAAC,aAAa,EACvB,iCAAiC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EACzD,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAChC,CAAC;YACN,CAAC;YACD,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,cAAc,EAAE,mCAAmC,EAAE,MAAM,CAAC,CAAC;QACnG,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ;AA1CD,0CA0CC"}
1
+ {"version":3,"file":"ObjectValidator.js","sourceRoot":"","sources":["../../../src/types/object/ObjectValidator.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD,+CAA4C;AAM5C,MAAa,eAAkC,SAAQ,qBAAY;IAG5B;IAFnB,IAAI,GAAG,QAAQ,CAAC;IAEhC,YAAmC,MAA0B;QACzD,KAAK,EAAE,CAAC;QADuB,WAAM,GAAN,MAAM,CAAoB;IAE7D,CAAC;IAED,kBAAkB;IACF,cAAc,CAAC,KAAc;QACzC,aAAa;QACb,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;QAC9E,CAAC;QAED,yBAAyB;QACzB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAElE,oBAAoB;QACpB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE;YACnF,MAAM,MAAM,GAAI,SAAuB,CAAC,cAAc,CAAE,KAAmD,CAAC,GAAG,CAAC,CAAC,CAAC;YAClH,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClB,QAAQ,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC,CAAmB,CAAC;QAEtB,IAAI,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC,WAAW,CACnB,qBAAS,CAAC,aAAa,EACvB,iCAAiC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EACzD,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAChC,CAAC;YACN,CAAC;YACD,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAS,CAAC,cAAc,EAAE,mCAAmC,EAAE,MAAM,CAAC,CAAC;QACnG,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAzCD,0CAyCC"}
@@ -0,0 +1,10 @@
1
+ import type { ValidationError } from "../../errors/ValidationError";
2
+ import { Validator } 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>;
7
+ type: string;
8
+ constructor(field: RecordTypeValidator<T>);
9
+ validateReturn(input: unknown): ValidationError<T> | null;
10
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RecordValidator = void 0;
4
+ const ErrorType_1 = require("../../errors/ErrorType");
5
+ const Validator_1 = require("../../Validator");
6
+ class RecordValidator extends Validator_1.Validator {
7
+ field;
8
+ type = "record";
9
+ constructor(field) {
10
+ super();
11
+ this.field = field;
12
+ }
13
+ validateReturn(input) {
14
+ // Check type
15
+ if (typeof input !== "object" || input === null) {
16
+ return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "Has to be an record.");
17
+ }
18
+ // Check field types
19
+ let hasError = false;
20
+ const fields = Object.fromEntries(Object.entries(input).map(([key, value]) => {
21
+ const result = this.field.validateReturn(value);
22
+ if (result !== null) {
23
+ hasError = true;
24
+ }
25
+ return [key, result ?? undefined];
26
+ }));
27
+ if (hasError) {
28
+ return this.createError(ErrorType_1.ErrorType.INCORRECT_TYPE, "One or more fields are incorrect.", fields);
29
+ }
30
+ return null;
31
+ }
32
+ }
33
+ exports.RecordValidator = RecordValidator;
34
+ //# sourceMappingURL=RecordValidator.js.map
@@ -0,0 +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;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,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,CAAmB,CAAC;QAEtB,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"}