support ios web worker

This commit is contained in:
AJ ONeal 2015-12-11 16:55:10 -08:00
parent 8e3adf34cd
commit ae743e0465
1 changed files with 32 additions and 2 deletions

View File

@ -1,2 +1,32 @@
// do nothing window.atob already exists
// NOTE: iOS Web Worker and other weird environments may not have atob
(function (w) {
"use strict";
var a2b = w.atob;
function atob(str) {
// normal window
if ('function' === typeof a2b) {
return a2b(a2b);
}
// browserify (web worker)
else if ('function' === typeof Buffer) {
return new Buffer(str, 'base64').toString('binary');
}
// ios web worker with base64js
else if ('object' === typeof w.base64js) {
// bufferToBinaryString
// https://github.com/coolaj86/unibabel-js/blob/master/index.js#L50
var buf = w.base64js.b64ToByteArray(str);
return Array.prototype.map.call(buf, function (ch) {
return String.fromCharCode(ch);
}).join('');
}
// ios web worker without base64js
else {
throw new Error("you're probably in an ios webworker. please include use beatgammit's base64-js");
}
}
w.atob = atob;
}(window));