CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-polkadot--util

A collection of useful utilities for @polkadot ecosystem with type checking, data conversion, and performance optimization functions

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

type-checking.mddocs/

Type Checking Utilities

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.

Capabilities

Basic Type Checking

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;

Specialized Type Checking

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;

Format Validation

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;

Class and Instance Checking

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;

Method Interface Checking

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;

Environment and System Checking

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;

Usage Examples

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);
}

Types

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

docs

arrays.md

big-numbers.md

compact.md

data-conversion.md

formatting.md

index.md

objects.md

strings.md

system.md

type-checking.md

tile.json