UNPKG

polyfill-service

Version:
1 lines 3.16 kB
{"aliases":["default","caniuse:datauri"],"browsers":{"ie":"6 - 9"},"license":"MIT","repo":"http://www.webtoolkit.info/javascript-base64.html","spec":"https://html.spec.whatwg.org/multipage/webappapis.html#dom-windowbase64-atob","docs":"https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/atob","baseDir":"atob","hasTests":true,"rawSource":"\n// atob\n(function (global) {\n\tvar keys = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=', keysRe = new RegExp('[^' + keys + ']');\n\n\t// <Global>.atob\n\tglobal.atob = function atob(input) {\n\t\tvar output = [], buffer, bufferB, chrs, index = 0, indexB, length = input.length;\n\n\t\tif ((keysRe.test(input)) || (/=/.test(input) && (/=[^=]/.test(input) || /={3}/.test(input)))) {\n\t\t\tthrow new Error('Invalid base64 data');\n\t\t}\n\n\t\tif (length % 4 > 0) {\n\t\t\tinput += Array(4 - length % 4 + 1).join(\"=\");\n\t\t\tlength = input.length;\n\t\t}\n\n\t\twhile (index < length) {\n\t\t\tfor (bufferB = [], indexB = index; index < indexB + 4;) {\n\t\t\t\tbufferB.push(keys.indexOf(input.charAt(index++)));\n\t\t\t}\n\n\t\t\tbuffer = (bufferB[0] << 18) + (bufferB[1] << 12) + ((bufferB[2] & 63) << 6) + (bufferB[3] & 63);\n\n\t\t\tchrs = [(buffer & (255 << 16)) >> 16, bufferB[2] === 64 ? -1 : (buffer & (255 << 8)) >> 8, bufferB[3] === 64 ? -1 : buffer & 255];\n\n\t\t\tfor (indexB = 0; indexB < 3; ++indexB) {\n\t\t\t\tif (chrs[indexB] >= 0 || indexB === 0) {\n\t\t\t\t\toutput.push(String.fromCharCode(chrs[indexB]));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn output.join('');\n\t};\n\n\t// <Global>.btoa\n\tglobal.btoa = function btoa(input) {\n\t\tvar output = [], buffer, chrs, index = 0, length = input.length;\n\n\t\twhile (index < length) {\n\t\t\tchrs = [input.charCodeAt(index++), input.charCodeAt(index++), input.charCodeAt(index++)];\n\n\t\t\tbuffer = (chrs[0] << 16) + ((chrs[1] || 0) << 8) + (chrs[2] || 0);\n\n\t\t\toutput.push(\n\t\t\t\tkeys.charAt((buffer & (63 << 18)) >> 18),\n\t\t\t\tkeys.charAt((buffer & (63 << 12)) >> 12),\n\t\t\t\tkeys.charAt(isNaN(chrs[1]) ? 64 : (buffer & (63 << 6)) >> 6),\n\t\t\t\tkeys.charAt(isNaN(chrs[2]) ? 64 : (buffer & 63))\n\t\t\t);\n\t\t}\n\n\t\treturn output.join('');\n\t};\n})(this);\n","minSource":"!function(t){var r=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",a=new RegExp(\"[^\"+r+\"]\");t.atob=function(t){var n,o,e,h,i=[],c=0,s=t.length;if(a.test(t)||/=/.test(t)&&(/=[^=]/.test(t)||/={3}/.test(t)))throw new Error(\"Invalid base64 data\");for(s%4>0&&(t+=Array(4-s%4+1).join(\"=\"),s=t.length);s>c;){for(o=[],h=c;h+4>c;)o.push(r.indexOf(t.charAt(c++)));for(n=(o[0]<<18)+(o[1]<<12)+((63&o[2])<<6)+(63&o[3]),e=[(n&255<<16)>>16,64===o[2]?-1:(65280&n)>>8,64===o[3]?-1:255&n],h=0;3>h;++h)(e[h]>=0||0===h)&&i.push(String.fromCharCode(e[h]))}return i.join(\"\")},t.btoa=function(t){for(var a,n,o=[],e=0,h=t.length;h>e;)n=[t.charCodeAt(e++),t.charCodeAt(e++),t.charCodeAt(e++)],a=(n[0]<<16)+((n[1]||0)<<8)+(n[2]||0),o.push(r.charAt((a&63<<18)>>18),r.charAt((258048&a)>>12),r.charAt(isNaN(n[1])?64:(4032&a)>>6),r.charAt(isNaN(n[2])?64:63&a));return o.join(\"\")}}(this);","detectSource":"'atob' in this"}