Compare commits

..

No commits in common. "master" and "v2.0.3" have entirely different histories.

6 changed files with 41 additions and 52 deletions

View File

@ -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).

View File

@ -20,5 +20,6 @@
"bower_components", "bower_components",
"test", "test",
"tests" "tests"
] ],
"version": "2.0.3"
} }

View File

@ -1,44 +1,36 @@
(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 String.fromCharCode(ch);
}).join('');
};
}
return function () { return Array.prototype.map.call(buf, function (ch) {
// ios web worker without base64js return String.fromCharCode(ch);
throw new Error("You're probably in an old browser or an iOS webworker." + }).join('');
" It might help to include beatgammit's base64-js."); }
}; // ios web worker without base64js
else {
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) { if (typeof module !== 'undefined') {
module.exports = atobBest; module.exports = atob;
} }
}(window)); }(window));

View File

@ -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;

View File

@ -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.3"
} }

View File

@ -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('.')
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));