UNPKG

t-comm

Version:

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

38 lines (35 loc) 1.57 kB
import { _fromCC, B64 } from './config.mjs'; /* eslint-disable */ var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; var utob = function utob(u) { return u.replace(re_utob, cb_utob); }; var cb_utob = function cb_utob(c) { if (c.length < 2) { var cc = c.charCodeAt(0); return cc < 0x80 ? c : cc < 0x800 ? _fromCC(0xc0 | cc >>> 6) + _fromCC(0x80 | cc & 0x3f) : _fromCC(0xe0 | cc >>> 12 & 0x0f) + _fromCC(0x80 | cc >>> 6 & 0x3f) + _fromCC(0x80 | cc & 0x3f); } var cc = 0x10000 + (c.charCodeAt(0) - 0xD800) * 0x400 + (c.charCodeAt(1) - 0xDC00); return _fromCC(0xf0 | cc >>> 18 & 0x07) + _fromCC(0x80 | cc >>> 12 & 0x3f) + _fromCC(0x80 | cc >>> 6 & 0x3f) + _fromCC(0x80 | cc & 0x3f); }; var encode = function encode(str) { return innerEncode(utob(str)); }; // 小程序版本的btoa var innerEncode = function innerEncode(string) { string = String(string); var bitmap; var a; var b; var c; var result = ''; var i = 0; var rest = string.length % 3; for (; i < string.length;) { if ((a = string.charCodeAt(i++)) > 255 || (b = string.charCodeAt(i++)) > 255 || (c = string.charCodeAt(i++)) > 255) throw new TypeError('Failed to execute \'btoa\' on \'Window\': The string to be encoded contains characters outside of the Latin1 range.'); bitmap = a << 16 | b << 8 | c; result += B64.charAt(bitmap >> 18 & 63) + B64.charAt(bitmap >> 12 & 63) + B64.charAt(bitmap >> 6 & 63) + B64.charAt(bitmap & 63); } return rest ? result.slice(0, rest - 3) + '==='.substring(rest) : result; }; export { encode, innerEncode };