@pallad/text-buffer-view
v1.0.3
Published
<div align="center"> <h1>Text buffer view 🌄</h1>
Downloads
8
Readme
Allows to work with array buffers, regular node.js buffers and strings in a unified way.
Supported encodings:
ascii
utf8
base64
base64url
hex
But why?
Buffer.from
does not throw error for invalid data which is an issue hard to spot.
Additionally, I want to work more with ArrayBuffer
for modern webcrypto
api and constant juggling between Buffer
and ArrayBuffer
was annoying.
Usage
import { TextBufferView } from '@pallad/text-buffer-view';
const buffer = TextBufferView.fromString('Hello, world!', 'utf8');
buffer.toString('hex');
buffer.toString('base64');
buffer.toString('base64url');
Prevents providing invalid input data
import {TextBufferView} from "./TextBufferView";
TextBufferView.fromString('invalid hex', 'hex'); // throws an error and Buffer.from('invalid hex', 'hex') does not
TextBufferView.fromString('invalid base64', 'base64'); // throws an error and Buffer.from('invalid base64', 'base64') does not
Providing empty string is always allowed
TextBufferView.fromString('', 'hex'); // buffer of length 0
TextBufferView.fromString('', 'base64'); // buffer of length 0
Creating from string
TextBufferView.fromString
creates view from string.
TextBufferView.fromString('c2478b42259098672eb247e1e46b28ee', 'hex');
TextBufferView.fromString('just regular text', 'utf8');
It is similar to Buffer.from
but throws an error when input string is invalid (only for hex
, base64
and base64url
encodings).
TextBufferView.fromString('invalid hex', 'hex'); // throws an error and Buffer.from('invalid hex', 'hex') does not
TextBufferView.fromString('invalid base64', 'base64'); // throws an error and Buffer.from('invalid base64', 'base64') does not
Converting to string
const view = TextBufferView.fromString('c2478b42259098672eb247e1e46b28ee', 'hex');
view.toString('hex'); // 'c2478b42259098672eb247e1e46b28ee'
view.toString('base64'); // 'wkeLQilAmGcuskfh5Gso7g=='
view.toString('base64url'); // 'wkeLQiWQmGcuskfh5Gso7g'
view.toString('utf8'); // some utf8 gibberish
view.toString('ascii'); // some ascii gibberish
Accessing buffer
const view = TextBufferView.fromString('c2478b42259098672eb247e1e46b28ee', 'hex');
view.buffer; // makes copy of a buffer
view.originalBuffer; // returns original buffer - risking of modifying it