js-base64 2.2.0 → 2.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/1x1.png ADDED
Binary file
package/README.md CHANGED
@@ -63,6 +63,18 @@ TypeScript 2.0 type definition was added to the [DefinitelyTyped repository](htt
63
63
  $ npm install --save @types/js-base64
64
64
  ```
65
65
 
66
+ ## `.decode()` vs `.atob` (and `.encode()` vs `btoa()`)
67
+
68
+ Suppose you have:
69
+
70
+ ```
71
+ var pngBase64 =
72
+ "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=";
73
+ ```
74
+
75
+ Which is a Base64-encoded 1x1 transparent PNG, **DO NOT USE** `Base64.decode(pngBase64)`.  Use `Base64.atob(pngBase64)` instead.  `Base64.decode()` decodes to UTF-8 string while `Base64.atob()` decodes to bytes, which is compatible to browser built-in `atob()` (Which is absent in node.js).  The same rule applies to the opposite direction.
76
+
77
+
66
78
  ## SEE ALSO
67
79
 
68
80
  + http://en.wikipedia.org/wiki/Base64
package/base64.js CHANGED
@@ -12,7 +12,7 @@
12
12
  'use strict';
13
13
  // existing version for noConflict()
14
14
  var _Base64 = global.Base64;
15
- var version = "2.2.0";
15
+ var version = "2.3.2";
16
16
  // if node.js, we use Buffer
17
17
  var buffer;
18
18
  if (typeof module !== 'undefined' && module.exports) {
@@ -72,7 +72,7 @@
72
72
  return b.replace(/[\s\S]{1,3}/g, cb_encode);
73
73
  };
74
74
  var _encode = buffer ?
75
- buffer.from ? function (u) {
75
+ buffer.from && buffer.from !== Uint8Array.from ? function (u) {
76
76
  return (u.constructor === buffer.constructor ? u : buffer.from(u))
77
77
  .toString('base64')
78
78
  }
@@ -143,7 +143,7 @@
143
143
  return a.replace(/[\s\S]{1,4}/g, cb_decode);
144
144
  };
145
145
  var _decode = buffer ?
146
- buffer.from ? function(a) {
146
+ buffer.from && buffer.from !== Uint8Array.from ? function(a) {
147
147
  return (a.constructor === buffer.constructor
148
148
  ? a : buffer.from(a, 'base64')).toString();
149
149
  }
@@ -197,19 +197,24 @@
197
197
  }));
198
198
  };
199
199
  }
200
- // that's it!
201
- if (global['Meteor']) {
202
- Base64 = global.Base64; // for normal export in Meteor.js
200
+ //
201
+ // export Base64 to the namespace
202
+ //
203
+ if (global['Meteor']) { // Meteor.js
204
+ Base64 = global.Base64;
203
205
  }
206
+ // module.exports and AMD are mutually exclusive.
207
+ // module.exports has precedence.
204
208
  if (typeof module !== 'undefined' && module.exports) {
205
209
  module.exports.Base64 = global.Base64;
206
210
  }
207
- if (typeof define === 'function' && define.amd) {
208
- // AMD. Register as an anonymous module.
211
+ else if (typeof define === 'function' && define.amd) {
212
+ // AMD. Register as an anonymous module.
209
213
  define([], function(){ return global.Base64 });
210
214
  }
211
- })(typeof self !== 'undefined' ? self
212
- : typeof window !== 'undefined' ? window
213
- : typeof global !== 'undefined' ? global
214
- : this
215
+ // that's it!
216
+ })( typeof self !== 'undefined' ? self
217
+ : typeof window !== 'undefined' ? window
218
+ : typeof global !== 'undefined' ? global
219
+ : this
215
220
  );
package/base64.min.js CHANGED
@@ -1 +1 @@
1
- (function(global){"use strict";var _Base64=global.Base64;var version="2.2.0";var buffer;if(typeof module!=="undefined"&&module.exports){try{buffer=require("buffer").Buffer}catch(err){}}var b64chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var b64tab=function(bin){var t={};for(var i=0,l=bin.length;i<l;i++)t[bin.charAt(i)]=i;return t}(b64chars);var fromCharCode=String.fromCharCode;var cb_utob=function(c){if(c.length<2){var cc=c.charCodeAt(0);return cc<128?c:cc<2048?fromCharCode(192|cc>>>6)+fromCharCode(128|cc&63):fromCharCode(224|cc>>>12&15)+fromCharCode(128|cc>>>6&63)+fromCharCode(128|cc&63)}else{var cc=65536+(c.charCodeAt(0)-55296)*1024+(c.charCodeAt(1)-56320);return fromCharCode(240|cc>>>18&7)+fromCharCode(128|cc>>>12&63)+fromCharCode(128|cc>>>6&63)+fromCharCode(128|cc&63)}};var re_utob=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;var utob=function(u){return u.replace(re_utob,cb_utob)};var cb_encode=function(ccc){var padlen=[0,2,1][ccc.length%3],ord=ccc.charCodeAt(0)<<16|(ccc.length>1?ccc.charCodeAt(1):0)<<8|(ccc.length>2?ccc.charCodeAt(2):0),chars=[b64chars.charAt(ord>>>18),b64chars.charAt(ord>>>12&63),padlen>=2?"=":b64chars.charAt(ord>>>6&63),padlen>=1?"=":b64chars.charAt(ord&63)];return chars.join("")};var btoa=global.btoa?function(b){return global.btoa(b)}:function(b){return b.replace(/[\s\S]{1,3}/g,cb_encode)};var _encode=buffer?buffer.from?function(u){return(u.constructor===buffer.constructor?u:buffer.from(u)).toString("base64")}:function(u){return(u.constructor===buffer.constructor?u:new buffer(u)).toString("base64")}:function(u){return btoa(utob(u))};var encode=function(u,urisafe){return!urisafe?_encode(String(u)):_encode(String(u)).replace(/[+\/]/g,function(m0){return m0=="+"?"-":"_"}).replace(/=/g,"")};var encodeURI=function(u){return encode(u,true)};var re_btou=new RegExp(["[À-ß][€-¿]","[à-ï][€-¿]{2}","[ð-÷][€-¿]{3}"].join("|"),"g");var cb_btou=function(cccc){switch(cccc.length){case 4:var cp=(7&cccc.charCodeAt(0))<<18|(63&cccc.charCodeAt(1))<<12|(63&cccc.charCodeAt(2))<<6|63&cccc.charCodeAt(3),offset=cp-65536;return fromCharCode((offset>>>10)+55296)+fromCharCode((offset&1023)+56320);case 3:return fromCharCode((15&cccc.charCodeAt(0))<<12|(63&cccc.charCodeAt(1))<<6|63&cccc.charCodeAt(2));default:return fromCharCode((31&cccc.charCodeAt(0))<<6|63&cccc.charCodeAt(1))}};var btou=function(b){return b.replace(re_btou,cb_btou)};var cb_decode=function(cccc){var len=cccc.length,padlen=len%4,n=(len>0?b64tab[cccc.charAt(0)]<<18:0)|(len>1?b64tab[cccc.charAt(1)]<<12:0)|(len>2?b64tab[cccc.charAt(2)]<<6:0)|(len>3?b64tab[cccc.charAt(3)]:0),chars=[fromCharCode(n>>>16),fromCharCode(n>>>8&255),fromCharCode(n&255)];chars.length-=[0,0,2,1][padlen];return chars.join("")};var atob=global.atob?function(a){return global.atob(a)}:function(a){return a.replace(/[\s\S]{1,4}/g,cb_decode)};var _decode=buffer?buffer.from?function(a){return(a.constructor===buffer.constructor?a:buffer.from(a,"base64")).toString()}:function(a){return(a.constructor===buffer.constructor?a:new buffer(a,"base64")).toString()}:function(a){return btou(atob(a))};var decode=function(a){return _decode(String(a).replace(/[-_]/g,function(m0){return m0=="-"?"+":"/"}).replace(/[^A-Za-z0-9\+\/]/g,""))};var noConflict=function(){var Base64=global.Base64;global.Base64=_Base64;return Base64};global.Base64={VERSION:version,atob:atob,btoa:btoa,fromBase64:decode,toBase64:encode,utob:utob,encode:encode,encodeURI:encodeURI,btou:btou,decode:decode,noConflict:noConflict};if(typeof Object.defineProperty==="function"){var noEnum=function(v){return{value:v,enumerable:false,writable:true,configurable:true}};global.Base64.extendString=function(){Object.defineProperty(String.prototype,"fromBase64",noEnum(function(){return decode(this)}));Object.defineProperty(String.prototype,"toBase64",noEnum(function(urisafe){return encode(this,urisafe)}));Object.defineProperty(String.prototype,"toBase64URI",noEnum(function(){return encode(this,true)}))}}if(global["Meteor"]){Base64=global.Base64}if(typeof module!=="undefined"&&module.exports){module.exports.Base64=global.Base64}if(typeof define==="function"&&define.amd){define([],function(){return global.Base64})}})(typeof self!=="undefined"?self:typeof window!=="undefined"?window:typeof global!=="undefined"?global:this);
1
+ (function(global){"use strict";var _Base64=global.Base64;var version="2.3.2";var buffer;if(typeof module!=="undefined"&&module.exports){try{buffer=require("buffer").Buffer}catch(err){}}var b64chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var b64tab=function(bin){var t={};for(var i=0,l=bin.length;i<l;i++)t[bin.charAt(i)]=i;return t}(b64chars);var fromCharCode=String.fromCharCode;var cb_utob=function(c){if(c.length<2){var cc=c.charCodeAt(0);return cc<128?c:cc<2048?fromCharCode(192|cc>>>6)+fromCharCode(128|cc&63):fromCharCode(224|cc>>>12&15)+fromCharCode(128|cc>>>6&63)+fromCharCode(128|cc&63)}else{var cc=65536+(c.charCodeAt(0)-55296)*1024+(c.charCodeAt(1)-56320);return fromCharCode(240|cc>>>18&7)+fromCharCode(128|cc>>>12&63)+fromCharCode(128|cc>>>6&63)+fromCharCode(128|cc&63)}};var re_utob=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;var utob=function(u){return u.replace(re_utob,cb_utob)};var cb_encode=function(ccc){var padlen=[0,2,1][ccc.length%3],ord=ccc.charCodeAt(0)<<16|(ccc.length>1?ccc.charCodeAt(1):0)<<8|(ccc.length>2?ccc.charCodeAt(2):0),chars=[b64chars.charAt(ord>>>18),b64chars.charAt(ord>>>12&63),padlen>=2?"=":b64chars.charAt(ord>>>6&63),padlen>=1?"=":b64chars.charAt(ord&63)];return chars.join("")};var btoa=global.btoa?function(b){return global.btoa(b)}:function(b){return b.replace(/[\s\S]{1,3}/g,cb_encode)};var _encode=buffer?buffer.from&&buffer.from!==Uint8Array.from?function(u){return(u.constructor===buffer.constructor?u:buffer.from(u)).toString("base64")}:function(u){return(u.constructor===buffer.constructor?u:new buffer(u)).toString("base64")}:function(u){return btoa(utob(u))};var encode=function(u,urisafe){return!urisafe?_encode(String(u)):_encode(String(u)).replace(/[+\/]/g,function(m0){return m0=="+"?"-":"_"}).replace(/=/g,"")};var encodeURI=function(u){return encode(u,true)};var re_btou=new RegExp(["[À-ß][€-¿]","[à-ï][€-¿]{2}","[ð-÷][€-¿]{3}"].join("|"),"g");var cb_btou=function(cccc){switch(cccc.length){case 4:var cp=(7&cccc.charCodeAt(0))<<18|(63&cccc.charCodeAt(1))<<12|(63&cccc.charCodeAt(2))<<6|63&cccc.charCodeAt(3),offset=cp-65536;return fromCharCode((offset>>>10)+55296)+fromCharCode((offset&1023)+56320);case 3:return fromCharCode((15&cccc.charCodeAt(0))<<12|(63&cccc.charCodeAt(1))<<6|63&cccc.charCodeAt(2));default:return fromCharCode((31&cccc.charCodeAt(0))<<6|63&cccc.charCodeAt(1))}};var btou=function(b){return b.replace(re_btou,cb_btou)};var cb_decode=function(cccc){var len=cccc.length,padlen=len%4,n=(len>0?b64tab[cccc.charAt(0)]<<18:0)|(len>1?b64tab[cccc.charAt(1)]<<12:0)|(len>2?b64tab[cccc.charAt(2)]<<6:0)|(len>3?b64tab[cccc.charAt(3)]:0),chars=[fromCharCode(n>>>16),fromCharCode(n>>>8&255),fromCharCode(n&255)];chars.length-=[0,0,2,1][padlen];return chars.join("")};var atob=global.atob?function(a){return global.atob(a)}:function(a){return a.replace(/[\s\S]{1,4}/g,cb_decode)};var _decode=buffer?buffer.from&&buffer.from!==Uint8Array.from?function(a){return(a.constructor===buffer.constructor?a:buffer.from(a,"base64")).toString()}:function(a){return(a.constructor===buffer.constructor?a:new buffer(a,"base64")).toString()}:function(a){return btou(atob(a))};var decode=function(a){return _decode(String(a).replace(/[-_]/g,function(m0){return m0=="-"?"+":"/"}).replace(/[^A-Za-z0-9\+\/]/g,""))};var noConflict=function(){var Base64=global.Base64;global.Base64=_Base64;return Base64};global.Base64={VERSION:version,atob:atob,btoa:btoa,fromBase64:decode,toBase64:encode,utob:utob,encode:encode,encodeURI:encodeURI,btou:btou,decode:decode,noConflict:noConflict};if(typeof Object.defineProperty==="function"){var noEnum=function(v){return{value:v,enumerable:false,writable:true,configurable:true}};global.Base64.extendString=function(){Object.defineProperty(String.prototype,"fromBase64",noEnum(function(){return decode(this)}));Object.defineProperty(String.prototype,"toBase64",noEnum(function(urisafe){return encode(this,urisafe)}));Object.defineProperty(String.prototype,"toBase64URI",noEnum(function(){return encode(this,true)}))}}if(global["Meteor"]){Base64=global.Base64}if(typeof module!=="undefined"&&module.exports){module.exports.Base64=global.Base64}else if(typeof define==="function"&&define.amd){define([],function(){return global.Base64})}})(typeof self!=="undefined"?self:typeof window!=="undefined"?window:typeof global!=="undefined"?global:this);
package/bower.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "js-base64",
3
- "version": "2.2.0",
4
- "license": "BSD 3-Clause",
3
+ "version": "2.3.2",
4
+ "license": "BSD-3-Clause",
5
5
  "main": [
6
6
  "./base64.js"
7
7
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "js-base64",
3
- "version": "2.2.0",
3
+ "version": "2.3.2",
4
4
  "description": "Yet another Base64 transcoder in pure-JS",
5
5
  "main": "base64.js",
6
6
  "directories": {
@@ -20,7 +20,7 @@
20
20
  "base64"
21
21
  ],
22
22
  "author": "Dan Kogai",
23
- "license": "BSD 3-Clause",
23
+ "license": "BSD-3-Clause",
24
24
  "readmeFilename": "README.md",
25
25
  "gitHead": "8bfa436f733bec60c95c720e1d720c28b43ae0b2"
26
26
  }
package/.npmignore DELETED
@@ -1,4 +0,0 @@
1
- *,v
2
- attic/**/*
3
- node_modules/**/*
4
- tmp/**/*
package/test/dankogai.js DELETED
@@ -1,47 +0,0 @@
1
- /*
2
- * $Id: dankogai.js,v 0.4 2012/08/24 05:23:18 dankogai Exp dankogai $
3
- *
4
- * use mocha to test me
5
- * http://visionmedia.github.com/mocha/
6
- */
7
- var assert, Base64;
8
- if (this['window'] !== this) {
9
- assert = require("assert");
10
- Base64 = require('../base64.js').Base64;
11
- }
12
- var is = function (a, e, m) {
13
- return function () {
14
- assert.equal(a, e, m)
15
- }
16
- };
17
-
18
- describe('basic', function () {
19
- it('d', is(Base64.encode('d'), 'ZA=='));
20
- it('da', is(Base64.encode('da'), 'ZGE='));
21
- it('dan', is(Base64.encode('dan'), 'ZGFu'));
22
- it('ZA==', is(Base64.decode('ZA=='), 'd' ));
23
- it('ZGE=', is(Base64.decode('ZGE='), 'da' ));
24
- it('ZGFu', is(Base64.decode('ZGFu'), 'dan' ));
25
- });
26
-
27
- describe('whitespace', function () {
28
- it('Z A==', is(Base64.decode('ZA =='), 'd' ));
29
- it('ZG E=', is(Base64.decode('ZG E='), 'da' ));
30
- it('ZGF u', is(Base64.decode('ZGF u'), 'dan' ));
31
- });
32
-
33
- describe('null', function () {
34
- it('\\0', is(Base64.encode('\0'), 'AA=='));
35
- it('\\0\\0', is(Base64.encode('\0\0'), 'AAA='));
36
- it('\\0\\0\\0', is(Base64.encode('\0\0\0'), 'AAAA'));
37
- it('AA==', is(Base64.decode('AA=='), '\0' ));
38
- it('AAA=', is(Base64.decode('AAA='), '\0\0' ));
39
- it('AAAA', is(Base64.decode('AAAA'), '\0\0\0'));
40
- });
41
-
42
- describe('Base64', function () {
43
- it('.encode', is(Base64.encode('小飼弾'), '5bCP6aO85by+'));
44
- it('.encodeURI', is(Base64.encodeURI('小飼弾'), '5bCP6aO85by-'));
45
- it('.decode', is(Base64.decode('5bCP6aO85by+'), '小飼弾'));
46
- it('.decode', is(Base64.decode('5bCP6aO85by-'), '小飼弾'));
47
- });
package/test/es5.js DELETED
@@ -1,27 +0,0 @@
1
- /*
2
- * $Id: es5.js,v 0.1 2012/08/23 19:43:17 dankogai Exp dankogai $
3
- *
4
- * use mocha to test me
5
- * http://visionmedia.github.com/mocha/
6
- */
7
- var assert, Base64;
8
- if (this['window'] !== this) {
9
- assert = require("assert");
10
- Base64 = require('../base64.js').Base64;
11
- }
12
- var is = function (a, e, m) {
13
- return function () {
14
- assert.equal(a, e, m)
15
- }
16
- };
17
-
18
- if ('extendString' in Base64){
19
- Base64.extendString();
20
- describe('String', function () {
21
- it('.toBase64', is('小飼弾'.toBase64(), '5bCP6aO85by+'));
22
- it('.toBase64', is('小飼弾'.toBase64(true), '5bCP6aO85by-'));
23
- it('.toBase64URI', is('小飼弾'.toBase64URI(), '5bCP6aO85by-'));
24
- it('.fromBase64', is('5bCP6aO85by+'.fromBase64(), '小飼弾'));
25
- it('.fromBase64', is('5bCP6aO85by-'.fromBase64(), '小飼弾'));
26
- });
27
- }
package/test/index.html DELETED
@@ -1,33 +0,0 @@
1
- <html>
2
- <head>
3
- <meta charset="utf-8" />
4
- <link rel="stylesheet" href="https://raw.github.com/visionmedia/mocha/master/mocha.css" />
5
- <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
6
- <script src="https://raw.github.com/visionmedia/mocha/master/mocha.js"></script>
7
- <script>
8
- mocha.setup('bdd');
9
- </script>
10
- <script src="../base64.js"></script>
11
- <script>
12
- var assert = function(expr, msg) {
13
- if (!expr) throw new Error(msg || 'failed');
14
- };
15
- assert.equal = function(a, b, msg) {
16
- if (a !== b) throw new Error(msg || ('failed : '+a+','+b));
17
- };
18
- </script>
19
- <script src="./dankogai.js"></script>
20
- <script src="./es5.js"></script>
21
- <script src="./large.js"></script>
22
- <script src="./yoshinoya.js"></script>
23
- <script>
24
- $(function() {
25
- mocha.run();
26
- });
27
- </script>
28
- </head>
29
- <body>
30
- $Id: browser.html,v 0.2 2012/08/23 19:44:32 dankogai Exp dankogai $
31
- <div id="mocha"></div>
32
- </body>
33
- </html>
package/test/large.js DELETED
@@ -1,28 +0,0 @@
1
- /*
2
- * $Id: large.js,v 0.3 2012/08/23 19:14:37 dankogai Exp dankogai $
3
- *
4
- * use mocha to test me
5
- * http://visionmedia.github.com/mocha/
6
- */
7
- var assert, Base64;
8
- if (this['window'] !== this) {
9
- assert = require("assert");
10
- Base64 = require('../base64.js').Base64;
11
- }
12
- var is = function (a, e, m) {
13
- return function () {
14
- assert.equal(a, e, m)
15
- }
16
- };
17
- var seed = function () {
18
- var a, i;
19
- for (a = [], i = 0; i < 256; i++) {
20
- a.push(String.fromCharCode(i));
21
- }
22
- return a.join('');
23
- }();
24
- describe('Base64', function () {
25
- for (var i = 0, str = seed; i < 16; str += str, i++) {
26
- it(''+str.length, is(Base64.decode(Base64.encode(str)), str));
27
- }
28
- });
package/test/yoshinoya.js DELETED
@@ -1,22 +0,0 @@
1
- /*
2
- * use mocha to test me
3
- * http://visionmedia.github.com/mocha/
4
- */
5
- var assert, Base64;
6
- if (this['window'] !== this) {
7
- assert = require("assert");
8
- Base64 = require('../base64.js').Base64;
9
- }
10
- var is = function (a, e, m) {
11
- return function () {
12
- assert.equal(a, e, m)
13
- }
14
- };
15
-
16
- describe('Yoshinoya', function () {
17
- it('.encode', is(Base64.encode('𠮷野家'), '8KCut+mHjuWutg=='));
18
- it('.encodeURI', is(Base64.encodeURI('𠮷野家'), '8KCut-mHjuWutg'));
19
- it('.decode', is(Base64.decode('8KCut+mHjuWutg=='), '𠮷野家'));
20
- it('.decode', is(Base64.decode('8KCut-mHjuWutg'), '𠮷野家'));
21
- /* it('.decode', is(Base64.decode('7aGC7b636YeO5a62'), '𠮷野家')); */
22
- });