0.1.1 • Published 7 months ago

@tsxo/assure v0.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

@tsxo/assure

A very simple, lightweight, type-safe assertion library for JavaScript and TypeScript.

License: MIT TypeScript npm Tree Shakeable

Features

  • Type Safety - Full TypeScript support.
  • Type Narrows - Ability to narrow types via assert.
  • Small and Fast - Minimal overhead for your projects.
  • ESM and CJS - Seamlessly supports both ECMAScript Modules (ESM) and CommonJS (CJS) for flexibility across modern and legacy projects.
  • Tree-Shaking Ready - Designed with tree-shaking in mind to optimize application size.

Installation

npm install @tsxo/assure

Quick Start

The library provides a simple API for asserting conditions and throwing meaningful errors when conditions fail.

import { assert } from "@tsxo/assure";

type MyType = "a" | "b";

function act(v: MyType | undefined) {
    assert(v); // v is now narrowed to MyType
}

API Reference

Base Assertion

assert(value: unknown, msg?: string): asserts value

The core assertion function that checks if a value is truthy. Will type narrow.

assert(someValue, "Value must be truthy");

Equality Assertions

assert_eq<T>(l: T, r: T, msg?: string): void

Asserts that two values are strictly equal.

assert_eq(5, 5); // passes
assert_eq("hello", "hello"); // passes
assert_eq(5, 6); // throws error

assert_ne<T>(l: T, r: T, msg?: string): void

Asserts that two values are not strictly equal.

assert_ne(5, 6); // passes
assert_ne("hello", "world"); // passes
assert_ne(5, 5); // throws error

Ordering Assertions

assert_gt<T extends Ordered>(l: T, r: T, msg?: string): void

Asserts that the left value is greater than the right value.

assert_gt(5, 3); // passes
assert_gt(3, 5); // throws error

assert_lt<T extends Ordered>(l: T, r: T, msg?: string): void

Asserts that the left value is less than the right value.

assert_lt(3, 5); // passes
assert_lt(5, 3); // throws error

assert_gte<T extends Ordered>(l: T, r: T, msg?: string): void

Asserts that the left value is greater than or equal to the right value.

assert_gte(5, 3); // passes
assert_gte(5, 5); // passes
assert_gte(3, 5); // throws error

assert_lte<T extends Ordered>(l: T, r: T, msg?: string): void

Asserts that the left value is less than or equal to the right value.

assert_lte(3, 5); // passes
assert_lte(5, 5); // passes
assert_lte(5, 3); // throws error

Error Messages

All assertion functions accept an optional message parameter that will be included in the error when the assertion fails:

assert_eq(5, 6, "Numbers must be equal"); // throws "Assertion Error: Numbers must be equal"

Acknowledgments

This project draws inspiration from several excellent assertion libraries:

License

MIT License - fork, modify and use however you want.