UNPKG

@ctrl/ts-base32

Version:

Base32 encoder/decoder with support for multiple variants

51 lines (34 loc) 1.91 kB
# ts-base32 [![npm](https://badgen.net/npm/v/@ctrl/ts-base32)](https://www.npmjs.com/package/@ctrl/ts-base32) [![bundlesize](https://badgen.net/bundlephobia/min/@ctrl/ts-base32)](https://bundlephobia.com/result?p=@ctrl/ts-base32) 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 ```console npm install @ctrl/ts-base32 ``` ### Use ```ts 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): [@exodus/bytes](https://github.com/ExodusOSS/bytes) uses nodejs `Buffer`, but is very fast. | 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 base32-encode - https://github.com/LinusU/base32-encode base32-decode - https://github.com/LinusU/base32-decode uint8array-extras - https://github.com/sindresorhus/uint8array-extras