@tsxo/assure
Version:
A lightweight, zero dependancy, and typesafe suite of assert functions.
131 lines (86 loc) • 3.57 kB
Markdown
A very simple, lightweight, type-safe assertion library for JavaScript and TypeScript.
[](https://opensource.org/licenses/MIT)
[](https://www.typescriptlang.org/)


- **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
```bash
npm install @tsxo/assure
```
## Quick Start
The library provides a simple API for asserting conditions and throwing meaningful errors when conditions fail.
```typescript
import { assert } from "@tsxo/assure";
type MyType = "a" | "b";
function act(v: MyType | undefined) {
assert(v); // v is now narrowed to MyType
}
```
The core assertion function that checks if a value is truthy. Will type narrow.
```typescript
assert(someValue, "Value must be truthy");
```
Asserts that two values are strictly equal.
```typescript
assert_eq(5, 5); // passes
assert_eq("hello", "hello"); // passes
assert_eq(5, 6); // throws error
```
Asserts that two values are not strictly equal.
```typescript
assert_ne(5, 6); // passes
assert_ne("hello", "world"); // passes
assert_ne(5, 5); // throws error
```
Asserts that the left value is greater than the right value.
```typescript
assert_gt(5, 3); // passes
assert_gt(3, 5); // throws error
```
Asserts that the left value is less than the right value.
```typescript
assert_lt(3, 5); // passes
assert_lt(5, 3); // throws error
```
Asserts that the left value is greater than or equal to the right value.
```typescript
assert_gte(5, 3); // passes
assert_gte(5, 5); // passes
assert_gte(3, 5); // throws error
```
Asserts that the left value is less than or equal to the right value.
```typescript
assert_lte(3, 5); // passes
assert_lte(5, 5); // passes
assert_lte(5, 3); // throws error
```
All assertion functions accept an optional message parameter that will be included in the error when the assertion fails:
```typescript
assert_eq(5, 6, "Numbers must be equal"); // throws "Assertion Error: Numbers must be equal"
```
This project draws inspiration from several excellent assertion libraries:
- [Node.js Assert](https://nodejs.org/api/assert.html) - The built-in Node.js assertion module
- [tiny-invariant](https://github.com/alexreardon/tiny-invariant) - A tiny invariant function.
- [claims](https://crates.io/crates/claims) - Additional assertion macros for testing in Rust applications.
MIT License - fork, modify and use however you want.