diff --git a/angular-base64.js b/angular-base64.js index 6c1d665..cbeb974 100644 --- a/angular-base64.js +++ b/angular-base64.js @@ -69,17 +69,15 @@ } function decode(s) { + + if(!s) { + return s; + } + // convert to string s = "" + s; var pads, i, b10; var imax = s.length; - if (imax === 0) { - return s; - } - - if (imax % 4 !== 0) { - throw "Cannot decode base64"; - } pads = 0; if (s.charAt(imax -1) === PADCHAR) { @@ -124,6 +122,10 @@ throw "SyntaxError: Not enough arguments"; } + if(!s) { + return s; + } + var i, b10; var x = []; @@ -132,9 +134,6 @@ var imax = s.length - s.length % 3; - if (s.length === 0) { - return s; - } for (i = 0; i < imax; i += 3) { b10 = (getbyte(s,i) << 16) | (getbyte(s,i+1) << 8) | getbyte(s,i+2); x.push(ALPHA.charAt(b10 >> 18)); diff --git a/angular-base64.min.js b/angular-base64.min.js index 94434b0..99fd848 100644 --- a/angular-base64.min.js +++ b/angular-base64.min.js @@ -1 +1,2 @@ -!function(){"use strict";angular.module("base64",[]).constant("$base64",function(){function a(a,b){var c=f.indexOf(a.charAt(b));if(-1==c)throw"Cannot decode base64";return c}function b(b){b=""+b;var c,d,f,g=b.length;if(0==g)return b;if(0!=g%4)throw"Cannot decode base64";c=0,b.charAt(g-1)==e&&(c=1,b.charAt(g-2)==e&&(c=2),g-=4);var h=[];for(d=0;g>d;d+=4)f=a(b,d)<<18|a(b,d+1)<<12|a(b,d+2)<<6|a(b,d+3),h.push(String.fromCharCode(f>>16,255&f>>8,255&f));switch(c){case 1:f=a(b,d)<<18|a(b,d+1)<<12|a(b,d+2)<<6,h.push(String.fromCharCode(f>>16,255&f>>8));break;case 2:f=a(b,d)<<18|a(b,d+1)<<12,h.push(String.fromCharCode(f>>16))}return h.join("")}function c(a,b){var c=a.charCodeAt(b);if(c>255)throw"INVALID_CHARACTER_ERR: DOM Exception 5";return c}function d(a){if(1!=arguments.length)throw"SyntaxError: Not enough arguments";var b,d,g=[];a=""+a;var h=a.length-a.length%3;if(0==a.length)return a;for(b=0;h>b;b+=3)d=c(a,b)<<16|c(a,b+1)<<8|c(a,b+2),g.push(f.charAt(d>>18)),g.push(f.charAt(63&d>>12)),g.push(f.charAt(63&d>>6)),g.push(f.charAt(63&d));switch(a.length-h){case 1:d=c(a,b)<<16,g.push(f.charAt(d>>18)+f.charAt(63&d>>12)+e+e);break;case 2:d=c(a,b)<<16|c(a,b+1)<<8,g.push(f.charAt(d>>18)+f.charAt(63&d>>12)+f.charAt(63&d>>6)+e)}return g.join("")}var e="=",f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";return{encode:d,decode:b}}())}(); \ No newline at end of file + +!function(){"use strict";angular.module("base64",[]).constant("$base64",function(){function r(r,t){var n=h.indexOf(r.charAt(t));if(-1===n)throw"Cannot decode base64";return n}function t(t){if(!t)return t;t=""+t;var n,e,h,o=t.length;n=0,t.charAt(o-1)===a&&(n=1,t.charAt(o-2)===a&&(n=2),o-=4);var c=[];for(e=0;o>e;e+=4)h=r(t,e)<<18|r(t,e+1)<<12|r(t,e+2)<<6|r(t,e+3),c.push(String.fromCharCode(h>>16,h>>8&255,255&h));switch(n){case 1:h=r(t,e)<<18|r(t,e+1)<<12|r(t,e+2)<<6,c.push(String.fromCharCode(h>>16,h>>8&255));break;case 2:h=r(t,e)<<18|r(t,e+1)<<12,c.push(String.fromCharCode(h>>16))}return c.join("")}function n(r,t){var n=r.charCodeAt(t);if(n>255)throw"INVALID_CHARACTER_ERR: DOM Exception 5";return n}function e(r){if(1!==arguments.length)throw"SyntaxError: Not enough arguments";if(!r)return r;var t,e,o=[];r=""+r;var c=r.length-r.length%3;for(t=0;c>t;t+=3)e=n(r,t)<<16|n(r,t+1)<<8|n(r,t+2),o.push(h.charAt(e>>18)),o.push(h.charAt(e>>12&63)),o.push(h.charAt(e>>6&63)),o.push(h.charAt(63&e));switch(r.length-c){case 1:e=n(r,t)<<16,o.push(h.charAt(e>>18)+h.charAt(e>>12&63)+a+a);break;case 2:e=n(r,t)<<16|n(r,t+1)<<8,o.push(h.charAt(e>>18)+h.charAt(e>>12&63)+h.charAt(e>>6&63)+a)}return o.join("")}var a="=",h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";return{encode:e,decode:t}}())}(); \ No newline at end of file diff --git a/index.js b/index.js index 4447b88..b7b91fc 100644 --- a/index.js +++ b/index.js @@ -2,6 +2,6 @@ require('angular'); // load the angular-base64 module -require('./angular-base64.js') +require('./angular-base64.js'); module.exports = 'base64'; \ No newline at end of file