<!-- automd:badges color=yellow bundlejs codecov -->
npm install undio



ā Conventionally and safely convert between various JavaScript data types.
- Type-safe usage
- Runtime-type safety assertion
- Auto type detection and conversion
- Tree-shakable and compact build
- Leverage runtime native performance (+Bun stream utils)
- [ArrayBuffer][ArrayBuffer]
- [Base64][Base64]
- [Blob][Blob]
- [DataView][DataView]
- [Number Array][Number Array]
- [ReadableStream][ReadableStream]
- [NodeStream][NodeStream]
- [Response][Response]
- [Text][Text]
- [Uint8Array][Uint8Array]
Install package:
``sh⨠Auto-detect
npx nypm install undio
Import:
ESM (Node.js, Bun)
`js
import {} from "undio";
`CommonJS (Legacy Node.js)
`js
const {} = require("undio");
`CDN (Deno, Bun and Browsers)
`js
import {} from "https://esm.sh/undio";
`Auto Convert
Undio automatically detects the input type and uses the proper method to convert it to the expected type.
Example:
`ts
import { detectType, toText, toReadableStream } from "undio";// Convert any supported type (auto-detected)
const string = await toText(value);
const stream = await toReadableStream(value);
// "ArrayBuffer" | "Blob"| "DataView" | "NumberArray" | "ReadableStream" | "String" | "Uint8Array";
const type = detectType(value);
`> [!NOTE]
> Because of stream support, the return type can be a promise. Always make sure to use an
await before them.> [!NOTE]
> Alternatively you can use low-level
To(value) utils to explicitly convert from one type to another. See all utils section.Runtime type checking
You can use
is(input) and assert(input) utils to validate input type.> [!NOTE]
> All conversion utilities use assertions for runtime type safety by default, so you don't need to manually do this.
Example:
`ts
import { isReadableStream, assertArrayBuffer } from "undio";if (isReadableStream(value)) {
/ do something /
}
assertArrayBuffer(value); // Throws an error if value is not ArrayBuffer
// do something
`All utils
See all utils
Array Buffer
$3
Convert from [ArrayBuffer][ArrayBuffer] to [Base64][Base64]
$3
Convert from [ArrayBuffer][ArrayBuffer] to [Blob][Blob]
$3
Convert from [ArrayBuffer][ArrayBuffer] to [DataView][DataView]
$3
Convert from [ArrayBuffer][ArrayBuffer] to [Number Array][Number Array]
$3
Convert from [ArrayBuffer][ArrayBuffer] to [ReadableStream][ReadableStream]
$3
Convert from [ArrayBuffer][ArrayBuffer] to [Response][Response]
$3
Convert from [ArrayBuffer][ArrayBuffer] to [Text][Text]
$3
Convert from [ArrayBuffer][ArrayBuffer] to [Uint8Array][Uint8Array]
$3
Assert that input is an instance of [ArrayBuffer][ArrayBuffer] or throw a
TypeError.$3
Test if input is an instance of [ArrayBuffer][ArrayBuffer] and return
true or false.$3
Convert from any value to [ArrayBuffer][ArrayBuffer]
Base64
$3
Assert if input matches the [Base64][Base64] data URL (data:[][;base64],) or throw a
TypeError.$3
Convert from [Base64][Base64] to [ArrayBuffer][ArrayBuffer]
$3
Convert from [Base64][Base64] to [Blob][Blob]
$3
Convert from [Base64][Base64] to [DataView][DataView]
$3
Convert from [Base64][Base64] to [Number Array][Number Array]
$3
Convert from [Base64][Base64] to [ReadableStream][ReadableStream]
$3
Convert from [Base64][Base64] to [Response][Response]
$3
Convert from [Base64][Base64] to [Text][Text]
$3
Convert from [Base64][Base64] to [Uint8Array][Uint8Array]
$3
Test if input matches the [Base64][Base64] data URL (data:[][;base64],) and return
true or false.$3
Convert from any value to [Base64][Base64]
Blob
$3
Assert that input is an instance of [Blob][Blob] or throw a
TypeError.$3
Convert from [Blob][Blob] to [ArrayBuffer][ArrayBuffer]
$3
Convert from [Blob][Blob] to [Base64][Base64]
$3
Convert from [Blob][Blob] to [DataView][DataView]
$3
Convert from [Blob][Blob] to [Number Array][Number Array]
$3
Convert from [Blob][Blob] to [ReadableStream][ReadableStream]
$3
Convert from [Blob][Blob] to [Response][Response]
$3
Convert from [Blob][Blob] to [Text][Text]
$3
Convert from [Blob][Blob] to [Uint8Array][Uint8Array]
$3
Test if input is an instance of [Blob][Blob] and return
true or false.$3
Convert from any value to [Blob][Blob]
Data View
$3
Assert that input is an instance of [DataView][DataView] or throw a
TypeError.$3
Convert from [DataView][DataView] to [ArrayBuffer][ArrayBuffer]
$3
Convert from [DataView][DataView] to [Base64][Base64]
$3
Convert from [DataView][DataView] to [Blob][Blob]
$3
Convert from [DataView][DataView] to [Number Array][Number Array]
$3
Convert from [DataView][DataView] to [ReadableStream][ReadableStream]
$3
Convert from [DataView][DataView] to [Response][Response]
$3
Convert from [DataView][DataView] to [Text][Text]
$3
Convert from [DataView][DataView] to [Uint8Array][Uint8Array]
$3
Test if input is an instance of [DataView][DataView] and return
true or false.$3
Convert from any value to [DataView][DataView]
Node Stream
$3
Assert that input is an instance of [NodeStream][NodeStream] or throw a
TypeError.$3
Test if input is an instance of [NodeStream][NodeStream] and return
true or false.$3
Convert from [NodeStream][NodeStream] to [ArrayBuffer][ArrayBuffer]
$3
Convert from [NodeStream][NodeStream] to [Base64][Base64]
$3
Convert from [NodeStream][NodeStream] to [Blob][Blob]
$3
Convert from [NodeStream][NodeStream] to [DataView][DataView]
$3
Convert from [NodeStream][NodeStream] to [Number Array][Number Array]
$3
Convert from [NodeStream][NodeStream] to [ReadableStream][ReadableStream]
$3
Convert from [NodeStream][NodeStream] to [Response][Response]
$3
Convert from [NodeStream][NodeStream] to [Text][Text]
$3
Convert from [NodeStream][NodeStream] to [Uint8Array][Uint8Array]
Number Array
$3
Assert that input is an instance of [Number Array][Number Array] or throw a
TypeError.$3
Test if input is an instance of [Number Array][Number Array] and return
true or false.$3
Convert from [Number Array][Number Array] to [ArrayBuffer][ArrayBuffer]
$3
Convert from [Number Array][Number Array] to [Base64][Base64]
$3
Convert from [Number Array][Number Array] to [Blob][Blob]
$3
Convert from [Number Array][Number Array] to [DataView][DataView]
$3
Convert from [Number Array][Number Array] to [ReadableStream][ReadableStream]
$3
Convert from [Number Array][Number Array] to [Text][Text]
$3
Convert from [Number Array][Number Array] to [Uint8Array][Uint8Array]
$3
Convert from any value to [Number Array][Number Array]
Readable Stream
$3
Assert that input is an instance of [ReadableStream][ReadableStream] or throw a
TypeError.$3
Test if input is an instance of [ReadableStream][ReadableStream] and return
true or false.$3
Convert from [ReadableStream][ReadableStream] to [ArrayBuffer][ArrayBuffer]
$3
Convert from [ReadableStream][ReadableStream] to [Base64][Base64]
$3
Convert from [ReadableStream][ReadableStream] to [Blob][Blob]
$3
Convert from [ReadableStream][ReadableStream] to [DataView][DataView]
$3
Convert from [ReadableStream][ReadableStream] to [Number Array][Number Array]
$3
Convert from [ReadableStream][ReadableStream] to [Text][Text]
$3
Convert from [ReadableStream][ReadableStream] to [Uint8Array][Uint8Array]
$3
Convert from any value to [ReadableStream][ReadableStream]
$3
Convert from any value to [Response][Response]
Response
$3
Assert that input is an instance of [Response][Response] or throw a
TypeError.$3
Test if input is an instance of [Response][Response] and return
true or false.$3
Convert from [Response][Response] to [ArrayBuffer][ArrayBuffer]
$3
Convert from [Response][Response] to [Base64][Base64]
$3
Convert from [Response][Response] to [Blob][Blob]
$3
Convert from [Response][Response] to [DataView][DataView]
$3
Convert from [Response][Response] to [Number Array][Number Array]
$3
Convert from [Response][Response] to [ReadableStream]ReadableStream]
$3
Convert from [Response][Response] to [Text][Text]
$3
Convert from [Response][Response] to [Uint8Array][Uint8Array]
String
$3
Convert from any value to [Text][Text]
Text
$3
Assert that input is an instance of [Text][Text] or throw a
TypeError.$3
Test if input is an instance of [Text][Text] and return
true or false.$3
Convert from [Text][Text] to [ArrayBuffer][ArrayBuffer]
$3
Convert from [Text][Text] to [Base64][Base64]
$3
Convert from [Text][Text] to [Blob][Blob]
$3
Convert from [Text][Text] to [DataView][DataView]
$3
Convert from [Text][Text] to [Number Array][Number Array]
$3
Convert from [Text][Text] to [ReadableStream][ReadableStream]
$3
Convert from [Text][Text] to [Uint8Array][Uint8Array]
Uint8 Array
$3
Assert that input is an instance of [Uint8Array][Uint8Array] or throw a
TypeError.$3
Test if input is an instance of [Uint8Array][Uint8Array] and return
true or false.$3
Convert from any value to [Uint8Array][Uint8Array]
$3
Convert from [Uint8Array][Uint8Array] to [ArrayBuffer][ArrayBuffer]
$3
Convert from [Uint8Array][Uint8Array] to [Base64][Base64]
$3
Convert from [Uint8Array][Uint8Array] to [Blob][Blob]
$3
Convert from [Uint8Array][Uint8Array] to [DataView][DataView]
$3
Convert from [Uint8Array][Uint8Array] to [Number Array][Number Array]
$3
Convert from [Uint8Array][Uint8Array] to [ReadableStream][ReadableStream]
$3
Convert from [Uint8Array][Uint8Array] to [Response][Response]
$3
Convert from [Uint8Array][Uint8Array] to [Text][Text]
$3
Convert from any value to any supported data type
$3
$3
Convert from [Number Array][Number Array] to [Response][Response]
$3
Convert from [ReadableStream][ReadableStream] to [Response][Response]
$3
Development
local development
- Clone this repository
- Install the latest LTS version of Node.js
- Enable Corepack using
corepack enable
- Install dependencies using pnpm install
- Run interactive tests using pnpm dev`Published under the MIT license.
Made by community š
---
_š¤ auto updated with automd_
[ArrayBuffer]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer
[Base64]: https://developer.mozilla.org/en-US/docs/Glossary/Base64
[Blob]: https://developer.mozilla.org/en-US/docs/Web/API/Blob
[DataView]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView
[Number Array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
[ReadableStream]: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream
[Response]: https://developer.mozilla.org/en-US/docs/Web/API/Response
[Text]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String
[Uint8Array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array
[NodeStream]: https://nodejs.org/api/stream.html#readable-streams