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
JavaScript
/*! 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 });
})));