Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@subsquid/util-internal-validation

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@subsquid/util-internal-validation - npm Package Compare versions

Comparing version
0.3.0
to
0.4.0
+12
lib/composite/tuple.d.ts
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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"}
"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 +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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"}
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"}
"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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"}
{
"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"

@@ -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)

@@ -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 {

}
}
}