45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| (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));
 |