Skip to content

ChALkeR/ts-base32

 
 

Repository files navigation

ts-base32 npm bundlesize

Base32 encode and decode in typescript exported as both commonjs and tree shakeable modules. Support for RFC4648, RFC4648_HEX, and CROCKFORD base32 encoding. Mostly directly taken from LinusU's packages.

Demo: https://ts-base32.ep.workers.dev

Install

npm install @ctrl/ts-base32

Use

import { base32Encode, base32Decode } from '@ctrl/ts-base32';
import { stringToUint8Array, uint8ArrayToString } from 'uint8array-extras';

console.log(base32Encode(stringToUint8Array('a')));
// 'ME======'

console.log(base32Encode(stringToUint8Array('a'), { padding: false }));
// 'ME'

console.log(base32Decode('ME======'));
// Uint8Array

console.log(uint8ArrayToString(base32Decode('ME======'))
// 'a'

Benchmarks

64KB payload, Node.js, ops/s (higher is better):
Not the fastest, but supports crockford and does not use Buffer.

Benchmark @ctrl/ts-base32 @exodus/bytes base32-encode/decode @scure/base
encode RFC4648 8,500 31,200 2,600 283
encode Crockford 8,500 332
decode RFC4648 6,500 9,900 755 333
decode Crockford 6,700 387

Run pnpm bench to reproduce.

See Also

@exodus/bytes - https://github.com/ExodusOSS/bytes
@scure/base - https://github.com/paulmillr/scure-base
base32-encode - https://github.com/LinusU/base32-encode
base32-decode - https://github.com/LinusU/base32-decode
uint8array-extras - https://github.com/sindresorhus/uint8array-extras

About

Base32 encoder/decoder with support for multiple variants

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages