basant307/AI_Governance_Project
048
1# Base642 3Fast Base64 encoder and decoder for browser and Node.js.4 5## Encoder6 7- Implements Base64 encoding algorithm compatible with Node's Buffer.8- Isomorphic—it can be used in, both, Node and the browser.9- Faster than the Node's implementation for short blobs, smaller than 40 bytes.10- Uses Node's implementation for long blobs, if available. Hence, it also works11 in browser, but in Node environment will perform faster for short strings.12- Can encode into Base64 text or Base64 `Uint8Array`.13 14 15### Usage16 17Use encoder compatible with Node's Buffer:18 19```ts20import {toBase64} from '@jsonjoy.com/base64';21 22toBase64(new Uint8Array([1, 2, 3]));23```24 25Create your custom encoder:26 27```ts28import {createToBase64} from '@jsonjoy.com/base64';29 30const encode = createToBase64('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+_');31 32encode(new Uint8Array([1, 2, 3]));33```34 35 36### Benchmark37 38Below benchmark encodes random binary blobs of sizes 8, 16, 32, 64, 128, 256, 512, and 1024 byes.39`@jsonjoy.com/base64` is faster, because for short strings (less than 40 chars) it uses a40native JavaScript implementation, which is faster and also works in browsers. For blobs larger41than 40 chars, it falls back to Node `Buffer` implementation, if available.42 43Encoding:44 45```46node src/__bench__/encode.js47util/base64 toBase64(uint8) x 1,531,283 ops/sec ±0.30% (92 runs sampled), 653 ns/op48util/base64 createToBase64()(uint8) x 946,364 ops/sec ±0.76% (100 runs sampled), 1057 ns/op49js-base64 x 1,103,190 ops/sec ±1.27% (96 runs sampled), 906 ns/op50fast-base64-encode x 500,225 ops/sec ±0.64% (96 runs sampled), 1999 ns/op51base64-js x 328,368 ops/sec ±0.25% (95 runs sampled), 3045 ns/op52Buffer.from(uint8).toString('base64'); x 1,099,420 ops/sec ±0.20% (100 runs sampled), 910 ns/op53Fastest is util/base64 toBase64(uint8)54```55 56Decoding:57 58```59node src/__bench__/decode.js60@jsonjoy.com/base64 fromBase64(str) x 756,989 ops/sec ±0.46% (97 runs sampled), 1321 ns/op61@jsonjoy.com/base64 createFromBase64()(str) x 475,591 ops/sec ±0.37% (96 runs sampled), 2103 ns/op62Buffer.from(str, 'base64') x 545,012 ops/sec ±0.33% (101 runs sampled), 1835 ns/op63base64-js x 487,015 ops/sec ±1.19% (94 runs sampled), 2053 ns/op64js-base64 x 173,049 ops/sec ±0.20% (99 runs sampled), 5779 ns/op65Fastest is @jsonjoy.com/base64 fromBase64(str)66```67 68 69## Decoder70 71- Uses Node.js built-in `Buffer`, if available.72- When `Buffer` is not available, uses JavaScript implementation.73 74 75### Usage76 77Use decoder compatible with Node's Buffer:78 79```ts80import {toBase64, fromBase64} from '@jsonjoy.com/base64';81 82fromBase64(toBase64(new Uint8Array([1, 2, 3])));83```84 85Create your custom encoder:86 87```ts88import {createFromBase64} from '@jsonjoy.com/base64';89 90const decoder = createFromBase64('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+_');91 92decoder(toBase64(new Uint8Array([1, 2, 3])));93```94 