blob: 5512a3e4ce1872b98abc1c61186e90df325906fc (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
'use strict';
module.exports = function base64_encode(stringToEncode) {
// eslint-disable-line camelcase
// discuss at: http://locutus.io/php/base64_encode/
// original by: Tyler Akins (http://rumkin.com)
// improved by: Bayron Guevara
// improved by: Thunder.m
// improved by: Kevin van Zonneveld (http://kvz.io)
// improved by: Kevin van Zonneveld (http://kvz.io)
// improved by: Rafał Kukawski (http://blog.kukawski.pl)
// bugfixed by: Pellentesque Malesuada
// improved by: Indigo744
// example 1: base64_encode('Kevin van Zonneveld')
// returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='
// example 2: base64_encode('a')
// returns 2: 'YQ=='
// example 3: base64_encode('✓ à la mode')
// returns 3: '4pyTIMOgIGxhIG1vZGU='
// encodeUTF8string()
// Internal function to encode properly UTF8 string
// Adapted from Solution #1 at https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
var encodeUTF8string = function encodeUTF8string(str) {
// first we use encodeURIComponent to get percent-encoded UTF-8,
// then we convert the percent encodings into raw bytes which
// can be fed into the base64 encoding algorithm.
return encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function toSolidBytes(match, p1) {
return String.fromCharCode('0x' + p1);
});
};
if (typeof window !== 'undefined') {
if (typeof window.btoa !== 'undefined') {
return window.btoa(encodeUTF8string(stringToEncode));
}
} else {
return new Buffer(stringToEncode).toString('base64');
}
var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
var o1;
var o2;
var o3;
var h1;
var h2;
var h3;
var h4;
var bits;
var i = 0;
var ac = 0;
var enc = '';
var tmpArr = [];
if (!stringToEncode) {
return stringToEncode;
}
stringToEncode = encodeUTF8string(stringToEncode);
do {
// pack three octets into four hexets
o1 = stringToEncode.charCodeAt(i++);
o2 = stringToEncode.charCodeAt(i++);
o3 = stringToEncode.charCodeAt(i++);
bits = o1 << 16 | o2 << 8 | o3;
h1 = bits >> 18 & 0x3f;
h2 = bits >> 12 & 0x3f;
h3 = bits >> 6 & 0x3f;
h4 = bits & 0x3f;
// use hexets to index into b64, and append result to encoded string
tmpArr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
} while (i < stringToEncode.length);
enc = tmpArr.join('');
var r = stringToEncode.length % 3;
return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);
};
//# sourceMappingURL=base64_encode.js.map
|