leancloud-storage
Version:
LeanCloud JavaScript SDK.
25 lines (20 loc) • 925 B
JavaScript
// base64 character set, plus padding character (=)
var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
module.exports = function (string) {
var result = '';
for (var i = 0; i < string.length;) {
var a = string.charCodeAt(i++);
var b = string.charCodeAt(i++);
var c = string.charCodeAt(i++);
if (a > 255 || b > 255 || c > 255) {
throw new TypeError('Failed to encode base64: The string to be encoded contains characters outside of the Latin1 range.');
}
var 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);
}
// To determine the final padding
var rest = string.length % 3;
// If there's need of padding, replace the last 'A's with equal signs
return rest ? result.slice(0, rest - 3) + '==='.substring(rest) : result;
};
;