1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- (function (w) {
- "use strict";
- function findBest(atobNative) {
- // normal window
- if ('function' === typeof atobNative) { return atobNative; }
- // browserify (web worker)
- if ('function' === typeof Buffer) {
- return function atobBrowserify(a) {
- //!! Deliberately using an API that's deprecated in node.js because
- //!! this file is for browsers and we expect them to cope with it.
- //!! Discussion: github.com/node-browser-compat/atob/pull/9
- return new Buffer(a, 'base64').toString('binary');
- };
- }
- // ios web worker with base64js
- if ('object' === typeof w.base64js) {
- // bufferToBinaryString
- // https://git.coolaj86.com/coolaj86/unibabel.js/blob/master/index.js#L50
- return function atobWebWorker_iOS(a) {
- var buf = w.base64js.b64ToByteArray(a);
- return Array.prototype.map.call(buf, function (ch) {
- return String.fromCharCode(ch);
- }).join('');
- };
- }
- return function () {
- // ios web worker without base64js
- throw new Error("You're probably in an old browser or an iOS webworker." +
- " It might help to include beatgammit's base64-js.");
- };
- }
- var atobBest = findBest(w.atob);
- w.atob = atobBest;
- if ((typeof module === 'object') && module && module.exports) {
- module.exports = atobBest;
- }
- }(window));
|