A collection of useful utilities for @polkadot ecosystem with type checking, data conversion, and performance optimization functions
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Comprehensive runtime type validation utilities for JavaScript/TypeScript applications, providing 28 functions to check data types, formats, and object characteristics with full type guard support.
Core type validation functions with TypeScript type guards.
/**
* Checks if value is a string
*/
function isString(value: unknown): value is string;
/**
* Checks if value is a number (excluding NaN)
*/
function isNumber(value: unknown): value is number;
/**
* Checks if value is a boolean
*/
function isBoolean(value: unknown): value is boolean;
/**
* Checks if value is an array
*/
function isArray(value: unknown): value is unknown[];
/**
* Checks if value is an object (excluding null and arrays)
*/
function isObject(value: unknown): value is Record<string, unknown>;
/**
* Checks if value is a function
*/
function isFunction(value: unknown): value is Function;
/**
* Checks if value is null
*/
function isNull(value: unknown): value is null;
/**
* Checks if value is undefined
*/
function isUndefined(value: unknown): value is undefined;
/**
* Checks if value is an Error instance
*/
function isError(value: unknown): value is Error;Advanced type checking for specific data types and formats.
/**
* Checks if value is a BigInt
*/
function isBigInt(value: unknown): value is bigint;
/**
* Checks if value is a BN (big number) instance
*/
function isBn(value: unknown): value is BN;
/**
* Checks if value is a Uint8Array
*/
function isU8a(value: unknown): value is Uint8Array;
/**
* Checks if value is a Buffer
*/
function isBuffer(value: unknown): value is Buffer;
/**
* Checks if value is a Promise
*/
function isPromise(value: unknown): value is Promise<unknown>;
/**
* Checks if value is an Observable (RxJS-like)
*/
function isObservable(value: unknown): value is Observable;Functions for validating string formats and data structures.
/**
* Checks if string is valid hexadecimal
* @param value - String to check
* @param bitLength - Expected bit length (optional)
* @param ignoreLength - Whether to ignore length validation
*/
function isHex(value: unknown, bitLength?: number, ignoreLength?: boolean): value is HexString;
/**
* Checks if string contains only ASCII characters
*/
function isAscii(value: unknown): value is string;
/**
* Checks if Uint8Array contains valid UTF-8 data
*/
function isUtf8(value: Uint8Array): boolean;
/**
* Checks if string is a valid IP address (IPv4 or IPv6)
*/
function isIp(value: unknown): value is string;
/**
* Checks if value is a valid JSON object
*/
function isJsonObject(value: unknown): value is Record<string, unknown>;
/**
* Checks if value is compact encoded (SCALE)
*/
function isCompact(value: unknown): boolean;Utilities for checking class relationships and instances.
/**
* Checks if value is a class constructor
*/
function isClass(value: unknown): value is Class;
/**
* Checks if value is an instance of specified constructor
* @param value - Value to check
* @param clazz - Constructor function
*/
function isInstanceOf(value: unknown, clazz: Class): boolean;
/**
* Checks if child class extends parent class
* @param Child - Child class constructor
* @param Parent - Parent class constructor
*/
function isChildClass(Child: Class, Parent: Class): boolean;Functions to check if objects implement specific method interfaces.
/**
* Checks if object has toBn method
*/
function isToBn(value: unknown): value is ToBn;
/**
* Checks if object has toBigInt method
*/
function isToBigInt(value: unknown): value is ToBigInt;
/**
* Checks if object has codec methods (toHex, toU8a, etc.)
*/
function isCodec(value: unknown): boolean;Platform and environment detection utilities.
/**
* Checks if running on RISC-V architecture
*/
function isRiscV(): boolean;
/**
* Checks if chain is a test chain (based on genesis hash)
*/
function isTestChain(genesisHash: string | Uint8Array): boolean;
/**
* Checks if value is a WebAssembly module
*/
function isWasm(value: unknown): value is WebAssembly.Module;Basic Type Validation:
import { isString, isNumber, isHex, isU8a } from "@polkadot/util";
function processData(input: unknown) {
if (isString(input)) {
// TypeScript knows input is string here
return input.toUpperCase();
}
if (isNumber(input)) {
// TypeScript knows input is number here
return input * 2;
}
throw new Error("Invalid input type");
}Format Validation:
import { isHex, isU8a, hexToU8a } from "@polkadot/util";
function convertToBytes(input: string | Uint8Array): Uint8Array {
if (isU8a(input)) {
return input;
}
if (isHex(input)) {
return hexToU8a(input);
}
throw new Error("Input must be hex string or Uint8Array");
}Interface Checking:
import { isToBn, bnToBn } from "@polkadot/util";
function convertToBn(value: unknown) {
if (isToBn(value)) {
// Value has toBn() method
return value.toBn();
}
// Fallback to general conversion
return bnToBn(value);
}interface Observable {
next(value?: unknown): unknown;
}
interface Class<T = unknown> {
new (...args: unknown[]): T;
}
interface ToBn {
toBn(): BN;
}
interface ToBigInt {
toBigInt(): bigint;
}
type HexString = `0x${string}`;Install with Tessl CLI
npx tessl i tessl/npm-polkadot--util