diff options
Diffstat (limited to 'node_modules/base64-arraybuffer/lib/base64-arraybuffer.js')
| -rw-r--r-- | node_modules/base64-arraybuffer/lib/base64-arraybuffer.js | 67 | 
1 files changed, 67 insertions, 0 deletions
diff --git a/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js b/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js new file mode 100644 index 0000000..e6b6306 --- /dev/null +++ b/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js @@ -0,0 +1,67 @@ +/* + * base64-arraybuffer + * https://github.com/niklasvh/base64-arraybuffer + * + * Copyright (c) 2012 Niklas von Hertzen + * Licensed under the MIT license. + */ +(function(){ +  "use strict"; + +  var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + +  // Use a lookup table to find the index. +  var lookup = new Uint8Array(256); +  for (var i = 0; i < chars.length; i++) { +    lookup[chars.charCodeAt(i)] = i; +  } + +  exports.encode = function(arraybuffer) { +    var bytes = new Uint8Array(arraybuffer), +    i, len = bytes.length, base64 = ""; + +    for (i = 0; i < len; i+=3) { +      base64 += chars[bytes[i] >> 2]; +      base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)]; +      base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)]; +      base64 += chars[bytes[i + 2] & 63]; +    } + +    if ((len % 3) === 2) { +      base64 = base64.substring(0, base64.length - 1) + "="; +    } else if (len % 3 === 1) { +      base64 = base64.substring(0, base64.length - 2) + "=="; +    } + +    return base64; +  }; + +  exports.decode =  function(base64) { +    var bufferLength = base64.length * 0.75, +    len = base64.length, i, p = 0, +    encoded1, encoded2, encoded3, encoded4; + +    if (base64[base64.length - 1] === "=") { +      bufferLength--; +      if (base64[base64.length - 2] === "=") { +        bufferLength--; +      } +    } + +    var arraybuffer = new ArrayBuffer(bufferLength), +    bytes = new Uint8Array(arraybuffer); + +    for (i = 0; i < len; i+=4) { +      encoded1 = lookup[base64.charCodeAt(i)]; +      encoded2 = lookup[base64.charCodeAt(i+1)]; +      encoded3 = lookup[base64.charCodeAt(i+2)]; +      encoded4 = lookup[base64.charCodeAt(i+3)]; + +      bytes[p++] = (encoded1 << 2) | (encoded2 >> 4); +      bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2); +      bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63); +    } + +    return arraybuffer; +  }; +})();  | 
