@subsquid/util-internal-validation
Advanced tools
| import { ValidationFailure } from '../error'; | ||
| import { Validator } from '../interface'; | ||
| export declare class TupleValidator implements Validator<any[]> { | ||
| readonly tuple: Validator[]; | ||
| private invalidLengthMessage?; | ||
| constructor(tuple: Validator[]); | ||
| private getInvalidLengthMessage; | ||
| cast(value: unknown): ValidationFailure | any[]; | ||
| validate(value: unknown): ValidationFailure | undefined; | ||
| phantom(): any[]; | ||
| } | ||
| //# sourceMappingURL=tuple.d.ts.map |
| {"version":3,"file":"tuple.d.ts","sourceRoot":"","sources":["../../src/composite/tuple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAA;AAGtC,qBAAa,cAAe,YAAW,SAAS,CAAC,GAAG,EAAE,CAAC;aAI/B,KAAK,EAAE,SAAS,EAAE;IAHtC,OAAO,CAAC,oBAAoB,CAAC,CAAQ;gBAGjB,KAAK,EAAE,SAAS,EAAE;IAGtC,OAAO,CAAC,uBAAuB;IAK/B,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,GAAG,GAAG,EAAE;IAmB/C,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,GAAG,SAAS;IAavD,OAAO,IAAI,GAAG,EAAE;CAGnB"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.TupleValidator = void 0; | ||
| const error_1 = require("../error"); | ||
| class TupleValidator { | ||
| constructor(tuple) { | ||
| this.tuple = tuple; | ||
| } | ||
| getInvalidLengthMessage() { | ||
| if (this.invalidLengthMessage) | ||
| return this.invalidLengthMessage; | ||
| return this.invalidLengthMessage = `{value} is not a tuple of length ${this.tuple.length}`; | ||
| } | ||
| cast(value) { | ||
| if (!Array.isArray(value)) | ||
| return new error_1.ValidationFailure(value, `{value} is not a tuple`); | ||
| if (value.length !== this.tuple.length) | ||
| return new error_1.ValidationFailure(value, this.getInvalidLengthMessage()); | ||
| let result = new Array(this.tuple.length); | ||
| for (let i = 0; i < this.tuple.length; i++) { | ||
| let v = this.tuple[i].cast(value[i]); | ||
| if (v instanceof error_1.ValidationFailure) { | ||
| v.path.push(i); | ||
| return v; | ||
| } | ||
| else { | ||
| result[i] = v; | ||
| } | ||
| } | ||
| return result; | ||
| } | ||
| validate(value) { | ||
| if (!Array.isArray(value)) | ||
| return new error_1.ValidationFailure(value, `{value} is not a tuple`); | ||
| if (value.length !== this.tuple.length) | ||
| return new error_1.ValidationFailure(value, this.getInvalidLengthMessage()); | ||
| for (let i = 0; i < this.tuple.length; i++) { | ||
| let err = this.tuple[i].validate(value[i]); | ||
| if (err) { | ||
| err.path.push(i); | ||
| return err; | ||
| } | ||
| } | ||
| } | ||
| phantom() { | ||
| throw new Error(); | ||
| } | ||
| } | ||
| exports.TupleValidator = TupleValidator; | ||
| //# sourceMappingURL=tuple.js.map |
| {"version":3,"file":"tuple.js","sourceRoot":"","sources":["../../src/composite/tuple.ts"],"names":[],"mappings":";;;AAAA,oCAA0C;AAI1C,MAAa,cAAc;IAGvB,YACoB,KAAkB;QAAlB,UAAK,GAAL,KAAK,CAAa;IACnC,CAAC;IAEI,uBAAuB;QAC3B,IAAI,IAAI,CAAC,oBAAoB;YAAE,OAAO,IAAI,CAAC,oBAAoB,CAAA;QAC/D,OAAO,IAAI,CAAC,oBAAoB,GAAG,oCAAoC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;IAC9F,CAAC;IAED,IAAI,CAAC,KAAc;QACf,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,yBAAiB,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAA;QACxF,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,IAAI,yBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAA;QAE3G,IAAI,MAAM,GAAU,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAEhD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACpC,IAAI,CAAC,YAAY,yBAAiB,EAAE,CAAC;gBACjC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACd,OAAO,CAAC,CAAA;YACZ,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YACjB,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAA;IACjB,CAAC;IAED,QAAQ,CAAC,KAAc;QACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,yBAAiB,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAA;QACxF,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,IAAI,yBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAA;QAE3G,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1C,IAAI,GAAG,EAAE,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAChB,OAAO,GAAG,CAAA;YACd,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO;QACH,MAAM,IAAI,KAAK,EAAE,CAAA;IACrB,CAAC;CACJ;AA/CD,wCA+CC"} |
| import {ValidationFailure} from '../error' | ||
| import {Validator} from '../interface' | ||
| export class TupleValidator implements Validator<any[]> { | ||
| private invalidLengthMessage?: string | ||
| constructor( | ||
| public readonly tuple: Validator[] | ||
| ) {} | ||
| private getInvalidLengthMessage(): string { | ||
| if (this.invalidLengthMessage) return this.invalidLengthMessage | ||
| return this.invalidLengthMessage = `{value} is not a tuple of length ${this.tuple.length}` | ||
| } | ||
| cast(value: unknown): ValidationFailure | any[] { | ||
| if (!Array.isArray(value)) return new ValidationFailure(value, `{value} is not a tuple`) | ||
| if (value.length !== this.tuple.length) return new ValidationFailure(value, this.getInvalidLengthMessage()) | ||
| let result: any[] = new Array(this.tuple.length) | ||
| for (let i = 0; i < this.tuple.length; i++) { | ||
| let v = this.tuple[i].cast(value[i]) | ||
| if (v instanceof ValidationFailure) { | ||
| v.path.push(i) | ||
| return v | ||
| } else { | ||
| result[i] = v | ||
| } | ||
| } | ||
| return result | ||
| } | ||
| validate(value: unknown): ValidationFailure | undefined { | ||
| if (!Array.isArray(value)) return new ValidationFailure(value, `{value} is not a tuple`) | ||
| if (value.length !== this.tuple.length) return new ValidationFailure(value, this.getInvalidLengthMessage()) | ||
| for (let i = 0; i < this.tuple.length; i++) { | ||
| let err = this.tuple[i].validate(value[i]) | ||
| if (err) { | ||
| err.path.push(i) | ||
| return err | ||
| } | ||
| } | ||
| } | ||
| phantom(): any[] { | ||
| throw new Error() | ||
| } | ||
| } |
+3
-0
@@ -11,2 +11,5 @@ import { ConstantValidator } from './composite/constant'; | ||
| export declare function keyTaggedUnion<U extends Record<string, Validator<any>>>(variants: U): Validator<GetKeyTaggedUnionCast<U>, GetKeyTaggedUnionSrc<U>>; | ||
| export declare function tuple<T extends Validator<any>>(t: T): Validator<[GetCastType<T>], [GetSrcType<T>]>; | ||
| export declare function tuple<T1 extends Validator<any>, T2 extends Validator<any>>(t1: T1, t2: T2): Validator<[GetCastType<T1>, GetCastType<T2>], [GetSrcType<T1>, GetSrcType<T2>]>; | ||
| export declare function tuple<T1 extends Validator<any>, T2 extends Validator<any>, T3 extends Validator<any>>(t1: T1, t2: T2, t3: T3): Validator<[GetCastType<T1>, GetCastType<T2>, GetCastType<T3>], [GetSrcType<T1>, GetSrcType<T2>, GetSrcType<T3>]>; | ||
| export declare function array<V extends Validator<any>>(item: V): Validator<GetCastType<V>[], GetSrcType<V>[]>; | ||
@@ -13,0 +16,0 @@ export declare function option<V extends Validator<any>>(item: V): Validator<GetCastType<V> | undefined, GetSrcType<V> | undefined | null>; |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"dsl.d.ts","sourceRoot":"","sources":["../src/dsl.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"dsl.d.ts","sourceRoot":"","sources":["../src/dsl.ts"],"names":[],"mappings":"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"} |
+6
-1
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.assertValidity = exports.cast = exports.constant = exports.oneOf = exports.ref = exports.withDefault = exports.withSentinel = exports.nullable = exports.option = exports.array = exports.keyTaggedUnion = exports.taggedUnion = exports.record = exports.object = void 0; | ||
| exports.assertValidity = exports.cast = exports.constant = exports.oneOf = exports.ref = exports.withDefault = exports.withSentinel = exports.nullable = exports.option = exports.array = exports.tuple = exports.keyTaggedUnion = exports.taggedUnion = exports.record = exports.object = void 0; | ||
| const array_1 = require("./composite/array"); | ||
@@ -16,2 +16,3 @@ const constant_1 = require("./composite/constant"); | ||
| const tagged_union_1 = require("./composite/tagged-union"); | ||
| const tuple_1 = require("./composite/tuple"); | ||
| const error_1 = require("./error"); | ||
@@ -41,2 +42,6 @@ function object(props) { | ||
| exports.keyTaggedUnion = keyTaggedUnion; | ||
| function tuple(...tuple) { | ||
| return new tuple_1.TupleValidator(tuple); | ||
| } | ||
| exports.tuple = tuple; | ||
| function array(item) { | ||
@@ -43,0 +48,0 @@ return new array_1.ArrayValidator(item); |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"dsl.js","sourceRoot":"","sources":["../src/dsl.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAChD,mDAAsD;AACtD,iDAA2C;AAC3C,mEAAiH;AACjH,mDAAsD;AACtD,+CAA6E;AAC7E,+CAA4E;AAC5E,+CAAkD;AAClD,+CAAkD;AAClD,yCAA4C;AAC5C,mDAA6C;AAC7C,2DAA2F;AAC3F,mCAA8D;AAI9D,SAAgB,MAAM,CAClB,KAAY;IAEZ,IAAI,YAAY,GAAmC,EAAE,CAAA;IACrD,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;QAClB,IAAI,CAAC,EAAE,CAAC;YACJ,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC;IACL,CAAC;IACD,OAAO,IAAI,wBAAe,CAAC,YAAY,CAAQ,CAAA;AACnD,CAAC;AAXD,wBAWC;AAGD,SAAgB,MAAM,CAClB,GAAM,EACN,KAAQ;IAKR,OAAO,IAAI,wBAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAC1C,CAAC;AARD,wBAQC;AAGD,SAAgB,WAAW,CACvB,KAAQ,EACR,QAAW;IAEX,OAAO,IAAI,0BAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;AAC3C,CAAC;AALD,kCAKC;AAGD,SAAgB,cAAc,CAC1B,QAAW;IAEX,OAAO,IAAI,0CAAuB,CAAC,QAAQ,CAAC,CAAA;AAChD,CAAC;AAJD,wCAIC;AAGD,SAAgB,KAAK,CAA2B,IAAO;IACnD,OAAO,IAAI,sBAAc,CAAC,IAAI,CAAC,CAAA;AACnC,CAAC;AAFD,sBAEC;AAGD,SAAgB,MAAM,CAA2B,IAAO;IAIpD,OAAO,IAAI,wBAAe,CAAC,IAAI,CAAC,CAAA;AACpC,CAAC;AALD,wBAKC;AAGD,SAAgB,QAAQ,CAA2B,IAAO;IAItD,OAAO,IAAI,4BAAiB,CAAC,IAAI,CAAC,CAAA;AACtC,CAAC;AALD,4BAKC;AAGD,SAAgB,YAAY,CACxB,KAAa,EACb,KAAqB,EACrB,SAAY;IAEZ,OAAO,IAAI,mBAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC;AAND,oCAMC;AAGD,SAAgB,WAAW,CACvB,KAAqB,EACrB,SAAY;IAEZ,OAAO,IAAI,iBAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;AACxC,CAAC;AALD,kCAKC;AAGD,SAAgB,GAAG,CAA2B,GAAY;IACtD,OAAO,IAAI,kBAAY,CAAC,GAAG,CAAC,CAAA;AAChC,CAAC;AAFD,kBAEC;AAGD,SAAgB,KAAK,CACjB,QAAW;IAEX,OAAO,IAAI,uBAAc,CAAC,QAAQ,CAAC,CAAA;AACvC,CAAC;AAJD,sBAIC;AAGD,SAAgB,QAAQ,CAAU,KAAQ,EAAE,MAAsC;IAC9E,OAAO,IAAI,4BAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;AAC/C,CAAC;AAFD,4BAEC;AAGD,SAAgB,IAAI,CAA2B,SAAY,EAAE,KAAc;IACvE,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAClC,IAAI,MAAM,YAAY,yBAAiB;QAAE,MAAM,IAAI,2BAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IACzF,OAAO,MAAM,CAAA;AACjB,CAAC;AAJD,oBAIC;AAGD,SAAgB,cAAc,CAC1B,SAAY,EACZ,KAAc;IAEd,IAAI,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnC,IAAI,GAAG;QAAE,MAAM,IAAI,2BAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;AAC1D,CAAC;AAND,wCAMC"} | ||
| {"version":3,"file":"dsl.js","sourceRoot":"","sources":["../src/dsl.ts"],"names":[],"mappings":"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"} |
+14
-0
| import { Validator } from './interface'; | ||
| export declare const ANY: Validator<any>; | ||
| export declare const ANY_OBJECT: Validator<object>; | ||
| export declare const STRING: Validator<string>; | ||
@@ -11,2 +13,4 @@ /** | ||
| export declare const NAT: Validator<number>; | ||
| export declare const BIG_NAT: Validator<bigint, string>; | ||
| export declare const ANY_NAT: Validator<bigint, number | string>; | ||
| /** | ||
@@ -28,4 +32,14 @@ * Hex encoded binary string or natural number | ||
| export declare const BYTES: Validator<Bytes>; | ||
| type Base58Bytes = string; | ||
| type Base64Bytes = string; | ||
| /** | ||
| * Base58 encoded binary string | ||
| */ | ||
| export declare const B58: Validator<Base58Bytes>; | ||
| /** | ||
| * Base64 encoded binary string | ||
| */ | ||
| export declare const B64: Validator<Base64Bytes>; | ||
| export declare const BOOLEAN: Validator<boolean>; | ||
| export {}; | ||
| //# sourceMappingURL=primitives.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AAGrC,eAAO,MAAM,MAAM,EAAE,SAAS,CAAC,MAAM,CAepC,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,GAAG,EAAE,SAAS,CAAC,MAAM,CAejC,CAAA;AAQD;;GAEG;AACH,eAAO,MAAM,GAAG,EAAE,SAAS,CAAC,MAAM,CAejC,CAAA;AAGD;;GAEG;AACH,KAAK,KAAK,GAAG,MAAM,CAAA;AAQnB;;GAEG;AACH,eAAO,MAAM,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAexC,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAoB9C,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAWlC,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,SAAS,CAAC,OAAO,CAWtC,CAAA"} | ||
| {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AAGrC,eAAO,MAAM,GAAG,EAAE,SAAS,CAAC,GAAG,CAU9B,CAAA;AAGD,eAAO,MAAM,UAAU,EAAE,SAAS,CAAC,MAAM,CAWxC,CAAA;AAGD,eAAO,MAAM,MAAM,EAAE,SAAS,CAAC,MAAM,CAepC,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,GAAG,EAAE,SAAS,CAAC,MAAM,CAejC,CAAA;AAaD;;GAEG;AACH,eAAO,MAAM,GAAG,EAAE,SAAS,CAAC,MAAM,CAejC,CAAA;AAGD,eAAO,MAAM,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAe7C,CAAA;AAGD,eAAO,MAAM,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAetD,CAAA;AAGD;;GAEG;AACH,KAAK,KAAK,GAAG,MAAM,CAAA;AAQnB;;GAEG;AACH,eAAO,MAAM,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAexC,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAoB9C,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAWlC,CAAA;AAGD,KAAK,WAAW,GAAG,MAAM,CAAA;AACzB,KAAK,WAAW,GAAG,MAAM,CAAA;AAGzB;;GAEG;AACH,eAAO,MAAM,GAAG,EAAE,SAAS,CAAC,WAAW,CAYtC,CAAA;AASD;;GAEG;AACH,eAAO,MAAM,GAAG,EAAE,SAAS,CAAC,WAAW,CAYtC,CAAA;AASD,eAAO,MAAM,OAAO,EAAE,SAAS,CAAC,OAAO,CAWtC,CAAA"} |
+113
-6
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.BOOLEAN = exports.BYTES = exports.SMALL_QTY = exports.QTY = exports.NAT = exports.INT = exports.STRING = void 0; | ||
| exports.BOOLEAN = exports.B64 = exports.B58 = exports.BYTES = exports.SMALL_QTY = exports.QTY = exports.ANY_NAT = exports.BIG_NAT = exports.NAT = exports.INT = exports.STRING = exports.ANY_OBJECT = exports.ANY = void 0; | ||
| const error_1 = require("./error"); | ||
| exports.ANY = { | ||
| cast(value) { | ||
| return value; | ||
| }, | ||
| validate(value) { | ||
| return; | ||
| }, | ||
| phantom() { | ||
| throw new Error('Function not implemented.'); | ||
| } | ||
| }; | ||
| exports.ANY_OBJECT = { | ||
| cast(value) { | ||
| return this.validate(value) || value; | ||
| }, | ||
| validate(value) { | ||
| if (value && typeof value == 'object') | ||
| return; | ||
| return new error_1.ValidationFailure(value, '{value} is not an object'); | ||
| }, | ||
| phantom() { | ||
| return {}; | ||
| } | ||
| }; | ||
| exports.STRING = { | ||
@@ -28,3 +52,3 @@ cast(value) { | ||
| cast(value) { | ||
| if (isInteger(value)) { | ||
| if (isSafeInteger(value)) { | ||
| return value; | ||
@@ -37,3 +61,3 @@ } | ||
| validate(value) { | ||
| if (isInteger(value)) | ||
| if (isSafeInteger(value)) | ||
| return; | ||
@@ -46,5 +70,8 @@ return new error_1.ValidationFailure(value, '{value} is not an integer'); | ||
| }; | ||
| function isInteger(value) { | ||
| function isSafeInteger(value) { | ||
| return typeof value == 'number' && Number.isSafeInteger(value); | ||
| } | ||
| function isBigNat(value) { | ||
| return typeof value == 'string' && /^\d+$/.test(value); | ||
| } | ||
| /** | ||
@@ -55,3 +82,3 @@ * Safe integer greater or equal to 0 | ||
| cast(value) { | ||
| if (isInteger(value) && value >= 0) { | ||
| if (isSafeInteger(value) && value >= 0) { | ||
| return value; | ||
@@ -64,3 +91,3 @@ } | ||
| validate(value) { | ||
| if (isInteger(value) && value >= 0) | ||
| if (isSafeInteger(value) && value >= 0) | ||
| return; | ||
@@ -73,2 +100,38 @@ return new error_1.ValidationFailure(value, '{value} is not a safe natural number'); | ||
| }; | ||
| exports.BIG_NAT = { | ||
| cast(value) { | ||
| if (isBigNat(value)) { | ||
| return BigInt(value); | ||
| } | ||
| else { | ||
| return new error_1.ValidationFailure(value, '{value} is not a string representing natural number'); | ||
| } | ||
| }, | ||
| validate(value) { | ||
| if (isBigNat(value)) | ||
| return; | ||
| return new error_1.ValidationFailure(value, '{value} is not a string representing natural number'); | ||
| }, | ||
| phantom() { | ||
| return '0'; | ||
| } | ||
| }; | ||
| exports.ANY_NAT = { | ||
| cast(value) { | ||
| if (isSafeInteger(value) && value >= 0 || isBigNat(value)) { | ||
| return BigInt(value); | ||
| } | ||
| else { | ||
| return new error_1.ValidationFailure(value, '{value} is not a natural number'); | ||
| } | ||
| }, | ||
| validate(value) { | ||
| if (isSafeInteger(value) && value >= 0 || isBigNat(value)) | ||
| return; | ||
| return new error_1.ValidationFailure(value, '{value} is not a natural number'); | ||
| }, | ||
| phantom() { | ||
| return 0; | ||
| } | ||
| }; | ||
| function isBytes(value) { | ||
@@ -141,2 +204,46 @@ return typeof value == 'string' && /^0x[0-9a-fA-F]*$/.test(value); | ||
| }; | ||
| /** | ||
| * Base58 encoded binary string | ||
| */ | ||
| exports.B58 = { | ||
| cast(value) { | ||
| if (isBase58(value)) | ||
| return value; | ||
| return new error_1.ValidationFailure(value, `{value} is not a base58 string`); | ||
| }, | ||
| validate(value) { | ||
| if (isBase58(value)) | ||
| return; | ||
| return new error_1.ValidationFailure(value, `{value} is not a base58 string`); | ||
| }, | ||
| phantom() { | ||
| throw new Error('Function not implemented.'); | ||
| } | ||
| }; | ||
| function isBase58(value) { | ||
| return typeof value == 'string' && | ||
| /^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]*$/.test(value); | ||
| } | ||
| /** | ||
| * Base64 encoded binary string | ||
| */ | ||
| exports.B64 = { | ||
| cast(value) { | ||
| if (isBase64(value)) | ||
| return value; | ||
| return new error_1.ValidationFailure(value, `{value} is not a base64 string`); | ||
| }, | ||
| validate(value) { | ||
| if (isBase64(value)) | ||
| return; | ||
| return new error_1.ValidationFailure(value, `{value} is not a base64 string`); | ||
| }, | ||
| phantom() { | ||
| throw new Error('Function not implemented.'); | ||
| } | ||
| }; | ||
| function isBase64(value) { | ||
| return typeof value == 'string' && | ||
| /^[0-9a-zA-Z+\/]*={0,2}$/.test(value); | ||
| } | ||
| exports.BOOLEAN = { | ||
@@ -143,0 +250,0 @@ cast(value) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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"} |
+3
-3
| { | ||
| "name": "@subsquid/util-internal-validation", | ||
| "version": "0.3.0", | ||
| "version": "0.4.0", | ||
| "description": "JSON data validation framework", | ||
@@ -17,3 +17,3 @@ "license": "GPL-3.0-or-later", | ||
| "peerDependencies": { | ||
| "@subsquid/logger": "^1.3.2" | ||
| "@subsquid/logger": "^1.3.3" | ||
| }, | ||
@@ -26,3 +26,3 @@ "peerDependenciesMeta": { | ||
| "devDependencies": { | ||
| "@subsquid/logger": "^1.3.2", | ||
| "@subsquid/logger": "^1.3.3", | ||
| "@types/node": "^18.18.14", | ||
@@ -29,0 +29,0 @@ "typescript": "~5.3.2" |
+9
-0
@@ -13,2 +13,3 @@ import {ArrayValidator} from './composite/array' | ||
| import {GetTaggedUnionCast, GetTaggedUnionSrc, TaggedUnion} from './composite/tagged-union' | ||
| import {TupleValidator} from './composite/tuple' | ||
| import {DataValidationError, ValidationFailure} from './error' | ||
@@ -58,2 +59,10 @@ import {GetCastType, GetSrcType, Validator} from './interface' | ||
| export function tuple<T extends Validator<any>>(t: T): Validator<[GetCastType<T>], [GetSrcType<T>]> | ||
| export function tuple<T1 extends Validator<any>, T2 extends Validator<any>>(t1: T1, t2: T2): Validator<[GetCastType<T1>, GetCastType<T2>], [GetSrcType<T1>, GetSrcType<T2>]> | ||
| export function tuple<T1 extends Validator<any>, T2 extends Validator<any>, T3 extends Validator<any>>(t1: T1, t2: T2, t3: T3): Validator<[GetCastType<T1>, GetCastType<T2>, GetCastType<T3>], [GetSrcType<T1>, GetSrcType<T2>, GetSrcType<T3>]> | ||
| export function tuple(...tuple: Validator<any>[]): Validator<any[]> { | ||
| return new TupleValidator(tuple) | ||
| } | ||
| export function array<V extends Validator<any>>(item: V): Validator<GetCastType<V>[], GetSrcType<V>[]> { | ||
@@ -60,0 +69,0 @@ return new ArrayValidator(item) |
+127
-6
@@ -5,2 +5,29 @@ import {ValidationFailure} from './error' | ||
| export const ANY: Validator<any> = { | ||
| cast(value: unknown): any { | ||
| return value | ||
| }, | ||
| validate(value: unknown): ValidationFailure | undefined { | ||
| return | ||
| }, | ||
| phantom(): any { | ||
| throw new Error('Function not implemented.') | ||
| } | ||
| } | ||
| export const ANY_OBJECT: Validator<object> = { | ||
| cast(value: unknown): object | ValidationFailure { | ||
| return this.validate(value) || (value as object) | ||
| }, | ||
| validate(value: unknown): ValidationFailure | undefined { | ||
| if (value && typeof value == 'object') return | ||
| return new ValidationFailure(value, '{value} is not an object') | ||
| }, | ||
| phantom(): object { | ||
| return {} | ||
| } | ||
| } | ||
| export const STRING: Validator<string> = { | ||
@@ -29,3 +56,3 @@ cast(value: unknown): ValidationFailure | string { | ||
| cast(value: unknown): number | ValidationFailure { | ||
| if (isInteger(value)) { | ||
| if (isSafeInteger(value)) { | ||
| return value | ||
@@ -37,3 +64,3 @@ } else { | ||
| validate(value: unknown): ValidationFailure | undefined { | ||
| if (isInteger(value)) return | ||
| if (isSafeInteger(value)) return | ||
| return new ValidationFailure(value, '{value} is not an integer') | ||
@@ -47,3 +74,3 @@ }, | ||
| function isInteger(value: unknown): value is number { | ||
| function isSafeInteger(value: unknown): value is number { | ||
| return typeof value == 'number' && Number.isSafeInteger(value) | ||
@@ -53,2 +80,7 @@ } | ||
| function isBigNat(value: unknown): value is string { | ||
| return typeof value == 'string' && /^\d+$/.test(value) | ||
| } | ||
| /** | ||
@@ -59,3 +91,3 @@ * Safe integer greater or equal to 0 | ||
| cast(value: unknown): number | ValidationFailure { | ||
| if (isInteger(value) && value >= 0) { | ||
| if (isSafeInteger(value) && value >= 0) { | ||
| return value | ||
@@ -67,3 +99,3 @@ } else { | ||
| validate(value: unknown): ValidationFailure | undefined { | ||
| if (isInteger(value) && value >= 0) return | ||
| if (isSafeInteger(value) && value >= 0) return | ||
| return new ValidationFailure(value, '{value} is not a safe natural number') | ||
@@ -77,2 +109,38 @@ }, | ||
| export const BIG_NAT: Validator<bigint, string> = { | ||
| cast(value: unknown): bigint | ValidationFailure { | ||
| if (isBigNat(value)) { | ||
| return BigInt(value) | ||
| } else { | ||
| return new ValidationFailure(value, '{value} is not a string representing natural number') | ||
| } | ||
| }, | ||
| validate(value: unknown): ValidationFailure | undefined { | ||
| if (isBigNat(value)) return | ||
| return new ValidationFailure(value, '{value} is not a string representing natural number') | ||
| }, | ||
| phantom(): string { | ||
| return '0' | ||
| } | ||
| } | ||
| export const ANY_NAT: Validator<bigint, number | string> = { | ||
| cast(value: unknown): bigint | ValidationFailure { | ||
| if (isSafeInteger(value) && value >= 0 || isBigNat(value)) { | ||
| return BigInt(value) | ||
| } else { | ||
| return new ValidationFailure(value, '{value} is not a natural number') | ||
| } | ||
| }, | ||
| validate(value: unknown): ValidationFailure | undefined { | ||
| if (isSafeInteger(value) && value >= 0 || isBigNat(value)) return | ||
| return new ValidationFailure(value, '{value} is not a natural number') | ||
| }, | ||
| phantom(): number | string { | ||
| return 0 | ||
| } | ||
| } | ||
| /** | ||
@@ -152,2 +220,55 @@ * Hex encoded binary string or natural number | ||
| type Base58Bytes = string | ||
| type Base64Bytes = string | ||
| /** | ||
| * Base58 encoded binary string | ||
| */ | ||
| export const B58: Validator<Base58Bytes> = { | ||
| cast(value: unknown): Base58Bytes | ValidationFailure { | ||
| if (isBase58(value)) return value | ||
| return new ValidationFailure(value, `{value} is not a base58 string`) | ||
| }, | ||
| validate(value: unknown): ValidationFailure | undefined { | ||
| if (isBase58(value)) return | ||
| return new ValidationFailure(value, `{value} is not a base58 string`) | ||
| }, | ||
| phantom(): string { | ||
| throw new Error('Function not implemented.') | ||
| } | ||
| } | ||
| function isBase58(value: unknown): value is Base58Bytes { | ||
| return typeof value == 'string' && | ||
| /^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]*$/.test(value) | ||
| } | ||
| /** | ||
| * Base64 encoded binary string | ||
| */ | ||
| export const B64: Validator<Base64Bytes> = { | ||
| cast(value: unknown): Base58Bytes | ValidationFailure { | ||
| if (isBase64(value)) return value | ||
| return new ValidationFailure(value, `{value} is not a base64 string`) | ||
| }, | ||
| validate(value: unknown): ValidationFailure | undefined { | ||
| if (isBase64(value)) return | ||
| return new ValidationFailure(value, `{value} is not a base64 string`) | ||
| }, | ||
| phantom(): string { | ||
| throw new Error('Function not implemented.') | ||
| } | ||
| } | ||
| function isBase64(value: unknown): value is Base64Bytes { | ||
| return typeof value == 'string' && | ||
| /^[0-9a-zA-Z+\/]*={0,2}$/.test(value) | ||
| } | ||
| export const BOOLEAN: Validator<boolean> = { | ||
@@ -164,2 +285,2 @@ cast(value: unknown): boolean | ValidationFailure { | ||
| } | ||
| } | ||
| } |
117641
18.16%96
5.49%2119
19.04%