Skip to content

pallad-ts/text-buffer-view

Repository files navigation

Text buffer view 🌄

Work with text buffers easily


CircleCI npm version Coverage Status License: MIT

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published