UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

49 lines (46 loc) 1.99 kB
import { B64RE, B64, _fromCC } from './config.mjs'; /* eslint-disable */ var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g; var _tidyB64 = function _tidyB64(s) { return s.replace(/[^A-Za-z0-9\+\/]/g, ''); }; var cb_btou = function cb_btou(cccc) { switch (cccc.length) { case 4: var cp = (0x07 & cccc.charCodeAt(0)) << 18 | (0x3f & cccc.charCodeAt(1)) << 12 | (0x3f & cccc.charCodeAt(2)) << 6 | 0x3f & cccc.charCodeAt(3); var offset = cp - 0x10000; return _fromCC((offset >>> 10) + 0xD800) + _fromCC((offset & 0x3FF) + 0xDC00); case 3: return _fromCC((0x0f & cccc.charCodeAt(0)) << 12 | (0x3f & cccc.charCodeAt(1)) << 6 | 0x3f & cccc.charCodeAt(2)); default: return _fromCC((0x1f & cccc.charCodeAt(0)) << 6 | 0x3f & cccc.charCodeAt(1)); } }; var btou = function btou(b) { return b.replace(re_btou, cb_btou); }; var _unURI = function _unURI(a) { return _tidyB64(a.replace(/[-_]/g, function (m0) { return m0 == '-' ? '+' : '/'; })); }; var decode = function decode(str) { return btou(innerDecode(_unURI(str))); }; // 小程序版本的atob var innerDecode = function innerDecode(string) { string = String(string).replace(/[\t\n\f\r ]+/g, ''); if (!B64RE.test(string)) throw new TypeError('Failed to execute \'atob\' on \'Window\': The string to be decoded is not correctly encoded.'); string += '=='.slice(2 - (string.length & 3)); var bitmap; var result = ''; var r1; var r2; var i = 0; for (; i < string.length;) { bitmap = B64.indexOf(string.charAt(i++)) << 18 | B64.indexOf(string.charAt(i++)) << 12 | (r1 = B64.indexOf(string.charAt(i++))) << 6 | (r2 = B64.indexOf(string.charAt(i++))); result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255) : r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255) : String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255); } return result; }; export { decode, innerDecode };