UNPKG

base64-u8array-arraybuffer

Version:

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

88 lines (65 loc) 3.05 kB
/*! base64-u8array-arraybuffer v1.0.3 | MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.base64u8ArrayBuffer = {})); }(this, (function (exports) { 'use strict'; var runningOnBrowser = typeof window !== 'undefined'; var base64urlToBase64 = function base64urlToBase64(base64UrlString) { // Replace non-url compatible chars with base64 standard chars var base64 = base64UrlString.replace(/-/g, '+').replace(/_/g, '/'); // Pad out with standard base64 required padding characters if missing var missingPadding = '='.repeat((4 - base64.length % 4) % 4); return base64 + missingPadding; }; var base64Decode = function base64Decode(data) { if (runningOnBrowser) { return atob(data); } // atob polyfill for Node return Buffer.from(data, 'base64').toString('binary'); }; var base64Encode = function base64Encode(data) { if (runningOnBrowser) { return btoa(data); } // btoa polyfill for Node return Buffer.from(data).toString('base64'); }; var base64ToUint8Array = function base64ToUint8Array(base64String) { // base64 sanitizing var base64 = base64urlToBase64(base64String); // base64 decoding var rawData = base64Decode(base64); // Converting raw data to Uint8Array return Uint8Array.from(rawData, function (_char) { return _char.charCodeAt(0); }); }; var typedArrayToBase64 = function typedArrayToBase64(typedArray) { var string = typedArray.reduce(function (data, _byte) { return data + String.fromCharCode(_byte); }, ''); return base64Encode(string); }; var uint8ArrayToBase64 = typedArrayToBase64; var typedArrayToArrayBuffer = function typedArrayToArrayBuffer(typedArray) { return typedArray.buffer; }; var uint8ArrayToArrayBuffer = typedArrayToArrayBuffer; var arrayBufferToUint8Array = function arrayBufferToUint8Array(arrayBuffer) { return new Uint8Array(arrayBuffer); }; var base64ToArrayBuffer = function base64ToArrayBuffer(base64String) { var uint8Array = base64ToUint8Array(base64String); return uint8ArrayToArrayBuffer(uint8Array); }; var arrayBufferToBase64 = function arrayBufferToBase64(arrayBuffer) { var uint8Array = arrayBufferToUint8Array(arrayBuffer); return uint8ArrayToBase64(uint8Array); }; exports.arrayBufferToBase64 = arrayBufferToBase64; exports.arrayBufferToUint8Array = arrayBufferToUint8Array; exports.base64ToArrayBuffer = base64ToArrayBuffer; exports.base64ToUint8Array = base64ToUint8Array; exports.typedArrayToArrayBuffer = typedArrayToArrayBuffer; exports.typedArrayToBase64 = typedArrayToBase64; exports.uint8ArrayToArrayBuffer = uint8ArrayToArrayBuffer; exports.uint8ArrayToBase64 = uint8ArrayToBase64; Object.defineProperty(exports, '__esModule', { value: true }); })));