t-comm
Version:
专业、稳定、纯粹的工具库
49 lines (46 loc) • 1.99 kB
JavaScript
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 };