# @SchemasJS/valibot-numbers

> **Part of [SchemasJS](https://codeberg.org/crisconru/schemasjs)** — Like DefinitelyTyped, but for schemas.

[![CI](https://codeberg.org/crisconru/schemasjs/actions/workflows/test.yml/badge.svg)](https://codeberg.org/crisconru/schemasjs/actions) [![version](https://img.shields.io/npm/v/%40schemasjs%2Fvalibot-numbers)](https://www.npmjs.com/package/@schemasjs/valibot-numbers) [![Bundle size minified](https://img.shields.io/bundlephobia/min/%40schemasjs/valibot-numbers/latest)](https://bundlephobia.com/package/@schemasjs/valibot-numbers)

Valibot schemas for numbers and their types.

## Numbers

| Data                     | Schema          | Type        | Values                        |
|:------------------------:|:---------------:|:-----------:| :---------------------------: |
| **Unsigned integers**    |                 |             |                               |
| Unsigned integer 8 bits  | `Uint8Schema`   | `Uint8`     | `0` to `255`                  |
| Unsigned integer 16 bits | `Uint16Schema`  | `Uint16`    | `0` to `65535`                |
| Unsigned integer 32 bits | `Uint32Schema`  | `Uint32`    | `0` to `4294967295`           |
| Unsigned Big Integer     | `BigUintSchema` | `BigUint`   | `0` to `2^64-1`               |
| **Integers**             |                 |             |                               |
| Integer 8 bits           | `Int8Schema`    | `Int8`      | `-128` to `127`               |
| Integer 16 bits          | `Int16Schema`   | `Int16`     | `-32768` to `32767`           |
| Integer 32 bits          | `Int32Schema`   | `Int32`     | `-2147483648` to `2147483647` |
| Big Integer              | `BigIntSchema`  | built-in TS | `-2^63` to `2^63-1`           |
| **Floats**               |                 |             |                               |
| Float 32 bit             | `Float32Schema` | `Float32`   | `-3.4e38` to `3.4e38`         |
| Float 64 bit             | `Float64Schema` | `Float64`   | `-1.8e308` to `1.8e308`       |

## Typed Arrays

It contains typed arrays too.

| Data                     | Schema                 | Type        | Values                        |
|:------------------------:|:----------------------:|:-----------:| :---------------------------: |
| **Unsigned integers**    |                        |             |                               |
| Unsigned integer 8 bits  | `Uint8ArraySchema`     | built-in TS | `0` to `255`                  |
| Unsigned integer 16 bits | `Uint16ArraySchema`    | built-in TS | `0` to `65535`                |
| Unsigned integer 32 bits | `Uint32ArraySchema`    | built-in TS | `0` to `4294967295`           |
| Unsigned Big Integer     | `BigUint64ArraySchema` | built-in TS | `0` to `2^64-1`               |
| **Integers**             |                        |             |                               |
| Integer 8 bits           | `Int8ArraySchema`      | built-in TS | `-128` to `127`               |
| Integer 16 bits          | `Int16ArraySchema`     | built-in TS | `-32768` to `32767`           |
| Integer 32 bits          | `Int32ArraySchema`     | built-in TS | `-2147483648` to `2147483647` |
| Big Integer              | `BigInt64ArraySchema`  | built-in TS | `-2^63` to `2^63-1`           |
| **Floats**               |                        |             |                               |
| Float 32 bit             | `Float32ArraySchema`   | built-in TS | `-3.4e38` to `3.4e38`         |
| Float 64 bit             | `Float64ArraySchema`   | built-in TS | `-1.8e308` to `1.8e308`       |

There is a cool feature: It is added if you introduce a number, it could be transformed into an typed array. For example:

```typescript
import * as v from 'valibot'
import { Uint8ArraTransform, Uint16ArrayTransform } from @schemasjs/valibot-numbers

const num = 256

console.log(v.parse(Uint8ArrayTransform, num)) // [255, 1]
console.log(v.parse(Uint16ArrayTransform, num)) // [256]
```

| Data                     | Schema                    | Type        | Values                        |
|:------------------------:|:-------------------------:|:-----------:| :---------------------------: |
| **Unsigned integers**    |                           |             |                               |
| Unsigned integer 8 bits  | `Uint8ArrayTransform`     | built-in TS | `0` to `255`                  |
| Unsigned integer 16 bits | `Uint16ArrayTransform`    | built-in TS | `0` to `65535`                |
| Unsigned integer 32 bits | `Uint32ArrayTransform`    | built-in TS | `0` to `4294967295`           |
| Unsigned Big Integer     | `BigUint64ArrayTransform` | built-in TS | `0` to `2^64-1`               |
| **Integers**             |                           |             |                               |
| Integer 8 bits           | `Int8ArrayTransform`      | built-in TS | `-128` to `127`               |
| Integer 16 bits          | `Int16ArrayTransform`     | built-in TS | `-32768` to `32767`           |
| Integer 32 bits          | `Int32ArrayTransform`     | built-in TS | `-2147483648` to `2147483647` |
| Big Integer              | `BigInt64ArrayTransform`  | built-in TS | `-2^63` to `2^63-1`           |
| **Floats**               |                           |             |                               |
| Float 32 bit             | `Float32ArrayTransform`   | built-in TS | `-3.4e38` to `3.4e38`         |
| Float 64 bit             | `Float64ArrayTransform`   | built-in TS | `-1.8e308` to `1.8e308`       |
