26 lines
789 B
JavaScript
26 lines
789 B
JavaScript
"use strict";
|
|
|
|
// var b64Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
|
|
|
function toCharCode(ch) {
|
|
return ch.charCodeAt(0);
|
|
}
|
|
|
|
function isValidB64Char(charCode) {
|
|
return charCode >= toCharCode('A') && charCode <= toCharCode('Z')
|
|
|| charCode >= toCharCode('a') && charCode <= toCharCode('z')
|
|
|| charCode >= toCharCode('0') && charCode <= toCharCode('9')
|
|
|| charCode === toCharCode('+')
|
|
|| charCode === toCharCode('/')
|
|
|| charCode === toCharCode('=');
|
|
}
|
|
|
|
function atob(str) {
|
|
for (var idx in str)
|
|
if (!isValidB64Char(str.charCodeAt(idx)))
|
|
throw new Error('Invalid character ' + str.charAt(idx) + ' in base64 String');
|
|
return Buffer.from(str, 'base64').toString('binary');
|
|
}
|
|
|
|
module.exports = atob.atob = atob;
|