UNPKG

base64-u8array-arraybuffer

Version:

A simple, lightweight, and efficient JavaScript library to manage encoding/decoding between base64 data, Uint8Arrays, and ArrayBuffers

73 lines (56 loc) 2.11 kB
/*! base64-u8array-arraybuffer v1.0.3 | MIT */ const runningOnBrowser = typeof window !== 'undefined'; const base64urlToBase64 = base64UrlString => { // Replace non-url compatible chars with base64 standard chars const base64 = base64UrlString .replace(/-/g, '+') .replace(/_/g, '/'); // Pad out with standard base64 required padding characters if missing const missingPadding = '='.repeat((4 - base64.length % 4) % 4); return base64 + missingPadding }; const base64Decode = data => { if (runningOnBrowser) { return atob(data) } // atob polyfill for Node return Buffer.from(data, 'base64').toString('binary') }; const base64Encode = data => { if (runningOnBrowser) { return btoa(data) } // btoa polyfill for Node return Buffer.from(data).toString('base64') }; const base64ToUint8Array = base64String => { // base64 sanitizing const base64 = base64urlToBase64(base64String); // base64 decoding const rawData = base64Decode(base64); // Converting raw data to Uint8Array return Uint8Array.from(rawData, char => char.charCodeAt(0)) }; const typedArrayToBase64 = typedArray => { const string = typedArray.reduce((data, byte) => { return data + String.fromCharCode(byte) }, ''); return base64Encode(string) }; const uint8ArrayToBase64 = typedArrayToBase64; const typedArrayToArrayBuffer = typedArray => { return typedArray.buffer }; const uint8ArrayToArrayBuffer = typedArrayToArrayBuffer; const arrayBufferToUint8Array = arrayBuffer => { return new Uint8Array(arrayBuffer) }; const base64ToArrayBuffer = base64String => { const uint8Array = base64ToUint8Array(base64String); return uint8ArrayToArrayBuffer(uint8Array) }; const arrayBufferToBase64 = arrayBuffer => { const uint8Array = arrayBufferToUint8Array(arrayBuffer); return uint8ArrayToBase64(uint8Array) }; export { arrayBufferToBase64, arrayBufferToUint8Array, base64ToArrayBuffer, base64ToUint8Array, typedArrayToArrayBuffer, typedArrayToBase64, uint8ArrayToArrayBuffer, uint8ArrayToBase64 };