Blame view

node_modules/atob/browser-atob.js 1.33 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
  (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));