'use strict'; function utf8ToBinaryString(str) { var escstr = encodeURIComponent(str); // replaces any uri escape sequence, such as %0A, // with binary escape, such as 0x0A var binstr = escstr.replace(/%([0-9A-F]{2})/g, function(match, p1) { return String.fromCharCode(parseInt(p1, 16)); }); return binstr; } function utf8ToBuffer(str) { var binstr = utf8ToBinaryString(str); var buf = binaryStringToBuffer(binstr); return buf; } function utf8ToBase64(str) { var binstr = utf8ToBinaryString(str); return btoa(binstr); } function binaryStringToUtf8(binstr) { var escstr = binstr.replace(/(.)/g, function(m, p) { var code = p .charCodeAt(0) .toString(16) .toUpperCase(); if (code.length < 2) { code = '0' + code; } return '%' + code; }); return decodeURIComponent(escstr); } function bufferToUtf8(buf) { var binstr = bufferToBinaryString(buf); return binaryStringToUtf8(binstr); } function base64ToUtf8(b64) { var binstr = atob(b64); return binaryStringToUtf8(binstr); } function bufferToBinaryString(buf) { var binstr = Array.prototype.map .call(buf, function(ch) { return String.fromCharCode(ch); }) .join(''); return binstr; } function bufferToBase64(arr) { var binstr = bufferToBinaryString(arr); return btoa(binstr); } function binaryStringToBuffer(binstr) { var buf; if ('undefined' !== typeof Uint8Array) { buf = new Uint8Array(binstr.length); } else { buf = []; } Array.prototype.forEach.call(binstr, function(ch, i) { buf[i] = ch.charCodeAt(0); }); return buf; } function base64ToBuffer(base64) { var binstr = atob(base64); var buf = binaryStringToBuffer(binstr); return buf; } module.exports = { utf8ToBinaryString: utf8ToBinaryString, utf8ToBuffer: utf8ToBuffer, utf8ToBase64: utf8ToBase64, binaryStringToUtf8: binaryStringToUtf8, bufferToUtf8: bufferToUtf8, base64ToUtf8: base64ToUtf8, bufferToBinaryString: bufferToBinaryString, bufferToBase64: bufferToBase64, binaryStringToBuffer: binaryStringToBuffer, base64ToBuffer: base64ToBuffer }; /** WEBPACK **/ module.exports.bufferToHex = function(buf) { return require('./hex.js').bufferToHex(buf); }; module.exports.hexToBuffer = function(hex) { return require('./hex.js').hexToBuffer(hex); }; module.exports.bufferToBase32 = function(buf) { return require('./base32.js').bufferToBase32(buf); }; module.exports.base32ToBuffer = function(b32) { return require('./base32.js').base32ToBuffer(b32); }; /** END WEBPACK **/