1.0.3 • Published 2 years ago
@pallad/text-buffer-view v1.0.3
Allows to work with array buffers, regular node.js buffers and strings in a unified way.
Supported encodings:
asciiutf8base64base64urlhex
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 notProviding empty string is always allowed
TextBufferView.fromString('', 'hex'); // buffer of length 0
TextBufferView.fromString('', 'base64'); // buffer of length 0Creating 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 notConverting 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 gibberishAccessing buffer
const view = TextBufferView.fromString('c2478b42259098672eb247e1e46b28ee', 'hex');
view.buffer; // makes copy of a buffer
view.originalBuffer; // returns original buffer - risking of modifying it