Spaces:
Sleeping
Sleeping
(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)); | |