Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
755cfea789 | |||
ca87d10534 | |||
|
e468cb840c | ||
|
2a8151a1d2 | ||
|
599c6330b9 | ||
|
372a2dff10 | ||
|
21542879a8 | ||
|
8a691b4548 | ||
|
2dd6aa1c2c | ||
|
50cb9f059a | ||
|
f6c7618c46 |
31
README.md
31
README.md
@ -1,42 +1,49 @@
|
|||||||
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).
|
||||||
|
|
||||||
It turns base64-encoded <strong>a</strong>scii data back **to** <strong>b</strong>inary.
|
It turns base64-encoded <strong>a</strong>scii data back **to** <strong>b</strong>inary.
|
||||||
|
|
||||||
(function () {
|
```javascript
|
||||||
|
(function () {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var atob = require('atob')
|
var atob = require('atob');
|
||||||
, b64 = "SGVsbG8gV29ybGQ="
|
var b64 = "SGVsbG8sIFdvcmxkIQ==";
|
||||||
, 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.1"
|
|
||||||
}
|
}
|
||||||
|
@ -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(a2b);
|
|
||||||
}
|
|
||||||
// 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);
|
|
||||||
|
|
||||||
|
|
||||||
|
// 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 Array.prototype.map.call(buf, function (ch) {
|
||||||
return String.fromCharCode(ch);
|
return String.fromCharCode(ch);
|
||||||
}).join('');
|
}).join('');
|
||||||
}
|
};
|
||||||
// ios web worker without base64js
|
|
||||||
else {
|
|
||||||
throw new Error("you're probably in an ios webworker. please include use beatgammit's base64-js");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
w.atob = atob;
|
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));
|
}(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.1"
|
"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