Compare commits
	
		
			7 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 755cfea789 | |||
| ca87d10534 | |||
|  | e468cb840c | ||
|  | 2a8151a1d2 | ||
|  | 599c6330b9 | ||
|  | 372a2dff10 | ||
|  | 50cb9f059a | 
							
								
								
									
										20
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								README.md
									
									
									
									
									
								
							| @ -1,6 +1,11 @@ | |||||||
| 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). | ||||||
| @ -12,32 +17,33 @@ 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 = "SGVsbG8gV29ybGQ="; |   var b64 = "SGVsbG8sIFdvcmxkIQ=="; | ||||||
|   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://github.com/coolaj86/unibabel-js) | Check out [unibabel.js](https://git.coolaj86.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 (see [#4](https://github.com/node-browser-compat/atob/issues/4)) |   * v1.1.3 add MIT license | ||||||
|   * v1.1.2 node only |   * v1.1.2 node only | ||||||
| 
 | 
 | ||||||
| LICENSE | LICENSE | ||||||
| ======= | ======= | ||||||
| 
 | 
 | ||||||
| Code copyright 2012-2015 AJ ONeal | Code copyright 2012-2018 AJ ONeal | ||||||
| 
 | 
 | ||||||
| Dual-licensed MIT and Apache-2.0 | Dual-licensed MIT and Apache-2.0 | ||||||
| 
 | 
 | ||||||
| Docs copyright 2012-2015 AJ ONeal | Docs copyright 2012-2018 AJ ONeal | ||||||
| 
 | 
 | ||||||
| Docs released under [Creative Commons](https://github.com/node-browser-compat/atob/blob/master/LICENSE.DOCS). | Docs released under [Creative Commons](https://git.coolaj86.com/coolaj86/atob.js/blob/master/LICENSE.DOCS). | ||||||
|  | |||||||
| @ -20,6 +20,5 @@ | |||||||
|     "bower_components", |     "bower_components", | ||||||
|     "test", |     "test", | ||||||
|     "tests" |     "tests" | ||||||
|   ], |   ] | ||||||
|   "version": "2.0.2" |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,32 +1,44 @@ | |||||||
| (function (w) { | (function (w) { | ||||||
|   "use strict"; |   "use strict"; | ||||||
| 
 | 
 | ||||||
|   var a2b = w.atob; |   function findBest(atobNative) { | ||||||
| 
 |  | ||||||
|   function atob(str) { |  | ||||||
|     // normal window
 |     // normal window
 | ||||||
|     if ('function' === typeof a2b) { |     if ('function' === typeof atobNative) { return atobNative; } | ||||||
|       return a2b(str); |  | ||||||
|     } |  | ||||||
|     // 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); |     // browserify (web worker)
 | ||||||
|       }).join(''); |     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 without base64js
 | 
 | ||||||
|     else { |     // ios web worker with base64js
 | ||||||
|       throw new Error("you're probably in an ios webworker. please include use beatgammit's base64-js"); |     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."); | ||||||
|  |     }; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   w.atob = atob; |   var atobBest = findBest(w.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 new Buffer(str, 'base64').toString('binary'); |   return Buffer.from(str, 'base64').toString('binary'); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| module.exports = atob.atob = atob; | module.exports = atob.atob = atob; | ||||||
|  | |||||||
| @ -1,10 +1,10 @@ | |||||||
| { | { | ||||||
|   "name": "atob", |   "name": "atob", | ||||||
|   "homepage": "https://github.com/coolaj86/node-browser-compat", |   "homepage": "https://git.coolaj86.com/coolaj86/atob.js.git", | ||||||
|   "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://github.com/coolaj86/node-browser-compat/atob.git" |     "url": "git://git.coolaj86.com/coolaj86/atob.js.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": ">= 0.4.0" |     "node": ">= 4.5.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.0.2" |   "version": "2.1.2" | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										8
									
								
								test.js
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								test.js
									
									
									
									
									
								
							| @ -1,15 +1,13 @@ | |||||||
| /*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('./index') |   var atob = require('.'); | ||||||
|     , encoded = "SGVsbG8gV29ybGQ=" |   var encoded = "SGVsbG8sIFdvcmxkIQ==" | ||||||
|     , unencoded = "Hello World" |   var 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