Utilities to deal with sized Uint8Array
Node Package 📦
100% TypeScript and ESM Rust-like patterns Strongly typed Uint8Array and ArrayLike size Zero-cost abstraction over Uint8Array and ArrayLike Zero-copy conversion from ArrayBufferView Use native Buffer for faster execution on Node Unit-tested const bytes8 = Bytes . alloc ( 8 ) // Bytes<8> Unsafe-allocated sized bytes const bytes8 = Bytes . allocUnsafe ( 8 ) // Bytes<8> const bytes8 = Bytes . random ( 8 ) // Bytes<8> const bytesX = new Uint8Array ( 8 ) // Bytes<number> if ( Bytes . is ( bytesX , 8 ) ) bytesX // Bytes<8> else bytesX // Bytes<number> Type-guarded runtime equality check if ( Bytes . equals ( bytesX , bytes8 ) ) bytesX // Bytes<8> else bytesX // Bytes<number> Runtime casting with Result pattern const bytes16 = Bytes . tryCast ( bytesX , 16 ) . unwrap ( ) // Bytes<16> Conversion from sized arrays const sized4 = Sized . cast ( [ 1 , 2 , 3 , 4 ] , 4 ) . unwrap ( ) // Sized<4> const bytes4 = Bytes . from ( sized4 ) // Bytes<4> Utf8, Hex, Base64, Ascii encoding Bytes . fromUtf8 ( Bytes . toUtf8 ( bytesX ) ) Bytes . fromHex ( Bytes . toHex ( bytesX ) ) Bytes . fromBase64 ( Bytes . toBase64 ( bytesX ) ) Bytes . fromAscii ( Bytes . toAscii ( bytesX ) ) Bytes . fromBigInt ( Bytes . toBigInt ( bytesX ) ) Sized slicing and padding const bytes8 = Bytes . sliceOrPadStart ( bytesX , 8 ) // Bytes<8>