Compare commits
	
		
			No commits in common. "master" and "v2.0.2" have entirely different histories.
		
	
	
		
	
		
							
								
								
									
										20
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								README.md
									
									
									
									
									
								
							@ -1,11 +1,6 @@
 | 
				
			|||||||
atob
 | 
					atob
 | 
				
			||||||
===
 | 
					===
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| **atob**
 | 
					 | 
				
			||||||
| [btoa](https://git.coolaj86.com/coolaj86/btoa.js)
 | 
					 | 
				
			||||||
| [unibabel.js](https://git.coolaj86.com/coolaj86/unibabel.js)
 | 
					 | 
				
			||||||
| Sponsored by [ppl](https://ppl.family)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Uses `Buffer` to emulate the exact functionality of the browser's atob.
 | 
					Uses `Buffer` to emulate the exact functionality of the browser's atob.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Note: Unicode may be handled incorrectly (like the browser).
 | 
					Note: Unicode may be handled incorrectly (like the browser).
 | 
				
			||||||
@ -17,33 +12,32 @@ It turns base64-encoded <strong>a</strong>scii data back **to** <strong>b</stron
 | 
				
			|||||||
  "use strict";
 | 
					  "use strict";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  var atob = require('atob');
 | 
					  var atob = require('atob');
 | 
				
			||||||
  var b64 = "SGVsbG8sIFdvcmxkIQ==";
 | 
					  var b64 = "SGVsbG8gV29ybGQ=";
 | 
				
			||||||
  var bin = atob(b64);
 | 
					  var bin = atob(b64);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  console.log(bin); // "Hello, World!"
 | 
					  console.log(bin); // "Hello World"
 | 
				
			||||||
}());
 | 
					}());
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Need Unicode and Binary Support in the Browser?
 | 
					### Need Unicode and Binary Support in the Browser?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Check out [unibabel.js](https://git.coolaj86.com/coolaj86/unibabel.js)
 | 
					Check out [unibabel.js](https://github.com/coolaj86/unibabel-js)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Changelog
 | 
					Changelog
 | 
				
			||||||
=======
 | 
					=======
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  * v2.1.0 address a few issues and PRs, update URLs
 | 
					 | 
				
			||||||
  * v2.0.0 provide browser version for ios web workers
 | 
					  * v2.0.0 provide browser version for ios web workers
 | 
				
			||||||
  * v1.2.0 provide (empty) browser version
 | 
					  * v1.2.0 provide (empty) browser version
 | 
				
			||||||
  * v1.1.3 add MIT license
 | 
					  * v1.1.3 add MIT license (see [#4](https://github.com/node-browser-compat/atob/issues/4))
 | 
				
			||||||
  * v1.1.2 node only
 | 
					  * v1.1.2 node only
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LICENSE
 | 
					LICENSE
 | 
				
			||||||
=======
 | 
					=======
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Code copyright 2012-2018 AJ ONeal
 | 
					Code copyright 2012-2015 AJ ONeal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Dual-licensed MIT and Apache-2.0
 | 
					Dual-licensed MIT and Apache-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Docs copyright 2012-2018 AJ ONeal
 | 
					Docs copyright 2012-2015 AJ ONeal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Docs released under [Creative Commons](https://git.coolaj86.com/coolaj86/atob.js/blob/master/LICENSE.DOCS).
 | 
					Docs released under [Creative Commons](https://github.com/node-browser-compat/atob/blob/master/LICENSE.DOCS).
 | 
				
			||||||
 | 
				
			|||||||
@ -20,5 +20,6 @@
 | 
				
			|||||||
    "bower_components",
 | 
					    "bower_components",
 | 
				
			||||||
    "test",
 | 
					    "test",
 | 
				
			||||||
    "tests"
 | 
					    "tests"
 | 
				
			||||||
  ]
 | 
					  ],
 | 
				
			||||||
 | 
					  "version": "2.0.2"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,44 +1,32 @@
 | 
				
			|||||||
(function (w) {
 | 
					(function (w) {
 | 
				
			||||||
  "use strict";
 | 
					  "use strict";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  function findBest(atobNative) {
 | 
					  var a2b = w.atob;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  function atob(str) {
 | 
				
			||||||
    // normal window
 | 
					    // normal window
 | 
				
			||||||
    if ('function' === typeof atobNative) { return atobNative; }
 | 
					    if ('function' === typeof a2b) {
 | 
				
			||||||
 | 
					      return a2b(str);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    // browserify (web worker)
 | 
					    // browserify (web worker)
 | 
				
			||||||
    if ('function' === typeof Buffer) {
 | 
					    else if ('function' === typeof Buffer) {
 | 
				
			||||||
      return function atobBrowserify(a) {
 | 
					      return new Buffer(str, 'base64').toString('binary');
 | 
				
			||||||
        //!! 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
 | 
					    // ios web worker with base64js
 | 
				
			||||||
    if ('object' === typeof w.base64js) {
 | 
					    else if ('object' === typeof w.base64js) {
 | 
				
			||||||
      // bufferToBinaryString
 | 
					      // bufferToBinaryString
 | 
				
			||||||
      // https://git.coolaj86.com/coolaj86/unibabel.js/blob/master/index.js#L50
 | 
					      // https://github.com/coolaj86/unibabel-js/blob/master/index.js#L50
 | 
				
			||||||
      return function atobWebWorker_iOS(a) {
 | 
					      var buf = w.base64js.b64ToByteArray(str);
 | 
				
			||||||
        var buf = w.base64js.b64ToByteArray(a);
 | 
					
 | 
				
			||||||
      return Array.prototype.map.call(buf, function (ch) {
 | 
					      return Array.prototype.map.call(buf, function (ch) {
 | 
				
			||||||
        return String.fromCharCode(ch);
 | 
					        return String.fromCharCode(ch);
 | 
				
			||||||
      }).join('');
 | 
					      }).join('');
 | 
				
			||||||
      };
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
		return function () {
 | 
					 | 
				
			||||||
    // ios web worker without base64js
 | 
					    // ios web worker without base64js
 | 
				
			||||||
			throw new Error("You're probably in an old browser or an iOS webworker." +
 | 
					    else {
 | 
				
			||||||
				" It might help to include beatgammit's base64-js.");
 | 
					      throw new Error("you're probably in an ios webworker. please include use beatgammit's base64-js");
 | 
				
			||||||
    };
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  var atobBest = findBest(w.atob);
 | 
					  w.atob = atob;
 | 
				
			||||||
  w.atob = atobBest;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if ((typeof module === 'object') && module && module.exports) {
 | 
					 | 
				
			||||||
    module.exports = atobBest;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}(window));
 | 
					}(window));
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
"use strict";
 | 
					"use strict";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function atob(str) {
 | 
					function atob(str) {
 | 
				
			||||||
  return Buffer.from(str, 'base64').toString('binary');
 | 
					  return new Buffer(str, 'base64').toString('binary');
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = atob.atob = atob;
 | 
					module.exports = atob.atob = atob;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,10 +1,10 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "atob",
 | 
					  "name": "atob",
 | 
				
			||||||
  "homepage": "https://git.coolaj86.com/coolaj86/atob.js.git",
 | 
					  "homepage": "https://github.com/coolaj86/node-browser-compat",
 | 
				
			||||||
  "description": "atob for Node.JS and Linux / Mac / Windows CLI (it's a one-liner)",
 | 
					  "description": "atob for Node.JS and Linux / Mac / Windows CLI (it's a one-liner)",
 | 
				
			||||||
  "repository": {
 | 
					  "repository": {
 | 
				
			||||||
    "type": "git",
 | 
					    "type": "git",
 | 
				
			||||||
    "url": "git://git.coolaj86.com/coolaj86/atob.js.git"
 | 
					    "url": "git://github.com/coolaj86/node-browser-compat/atob.git"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "keywords": [
 | 
					  "keywords": [
 | 
				
			||||||
    "atob",
 | 
					    "atob",
 | 
				
			||||||
@ -12,7 +12,7 @@
 | 
				
			|||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "author": "AJ ONeal <coolaj86@gmail.com> (https://coolaj86.com)",
 | 
					  "author": "AJ ONeal <coolaj86@gmail.com> (https://coolaj86.com)",
 | 
				
			||||||
  "engines": {
 | 
					  "engines": {
 | 
				
			||||||
    "node": ">= 4.5.0"
 | 
					    "node": ">= 0.4.0"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "main": "node-atob.js",
 | 
					  "main": "node-atob.js",
 | 
				
			||||||
  "browser": "browser-atob.js",
 | 
					  "browser": "browser-atob.js",
 | 
				
			||||||
@ -20,5 +20,5 @@
 | 
				
			|||||||
    "atob": "bin/atob.js"
 | 
					    "atob": "bin/atob.js"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "license": "(MIT OR Apache-2.0)",
 | 
					  "license": "(MIT OR Apache-2.0)",
 | 
				
			||||||
  "version": "2.1.2"
 | 
					  "version": "2.0.2"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										8
									
								
								test.js
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								test.js
									
									
									
									
									
								
							@ -1,13 +1,15 @@
 | 
				
			|||||||
 | 
					/*jshint strict:true node:true es5:true onevar:true laxcomma:true laxbreak:true eqeqeq:true immed:true latedef:true*/
 | 
				
			||||||
(function () {
 | 
					(function () {
 | 
				
			||||||
  "use strict";
 | 
					  "use strict";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  var atob = require('.');
 | 
					  var atob = require('./index')
 | 
				
			||||||
  var encoded = "SGVsbG8sIFdvcmxkIQ=="
 | 
					    , encoded = "SGVsbG8gV29ybGQ="
 | 
				
			||||||
  var unencoded = "Hello, World!";
 | 
					    , unencoded = "Hello World"
 | 
				
			||||||
  /*
 | 
					  /*
 | 
				
			||||||
    , encoded = "SGVsbG8sIBZM"
 | 
					    , encoded = "SGVsbG8sIBZM"
 | 
				
			||||||
    , unencoded = "Hello, 世界"
 | 
					    , unencoded = "Hello, 世界"
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
 | 
					    ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (unencoded !== atob(encoded)) {
 | 
					  if (unencoded !== atob(encoded)) {
 | 
				
			||||||
    console.log('[FAIL]', unencoded, atob(encoded));
 | 
					    console.log('[FAIL]', unencoded, atob(encoded));
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user