Code coverage report for imgly-sdk-html5/src/js/lib/base64.js

Statements: 9.52% (4 / 42)      Branches: 0% (0 / 10)      Functions: 0% (0 / 2)      Lines: 9.52% (4 / 42)      Ignored: none     

All files » imgly-sdk-html5/src/js/lib/ » base64.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94              1     1   1                                                                                                                                                               1  
/*!
 * Extracted from MinifyJpeg (Copyright (c) 2014 Hiroaki Matoba, MIT License):
 * https://github.com/hMatoba/MinifyJpeg
 */
 
'use strict';
 
Object.defineProperty(exports, '__esModule', {
  value: true
});
var KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
 
exports['default'] = {
  encode: function encode(input) {
    var output = '',
        chr1 = undefined,
        chr2 = undefined,
        chr3 = '',
        enc1 = undefined,
        enc2 = undefined,
        enc3 = undefined,
        enc4 = '',
        i = 0;
 
    do {
      chr1 = input[i++];
      chr2 = input[i++];
      chr3 = input[i++];
 
      enc1 = chr1 >> 2;
      enc2 = (chr1 & 3) << 4 | chr2 >> 4;
      enc3 = (chr2 & 15) << 2 | chr3 >> 6;
      enc4 = chr3 & 63;
 
      if (isNaN(chr2)) {
        enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
        enc4 = 64;
      }
 
      output = output + KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) + KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);
      chr1 = chr2 = chr3 = '';
      enc1 = enc2 = enc3 = enc4 = '';
    } while (i < input.length);
 
    return output;
  },
 
  decode: function decode(input) {
    var chr1 = undefined,
        chr2 = undefined,
        chr3 = '',
        enc1 = undefined,
        enc2 = undefined,
        enc3 = undefined,
        enc4 = '',
        i = 0,
        buf = [];
 
    // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
    var base64test = /[^A-Za-z0-9\+\/\=]/g;
    if (base64test.exec(input)) {
      throw new Error('There were invalid base64 characters in the input text.\n' + 'Valid base64 characters are A-Z, a-z, 0-9, \'+\', \'/\',and \'=\'\n' + 'Expect errors in decoding.');
    }
    input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
 
    do {
      enc1 = KEY_STR.indexOf(input.charAt(i++));
      enc2 = KEY_STR.indexOf(input.charAt(i++));
      enc3 = KEY_STR.indexOf(input.charAt(i++));
      enc4 = KEY_STR.indexOf(input.charAt(i++));
 
      chr1 = enc1 << 2 | enc2 >> 4;
      chr2 = (enc2 & 15) << 4 | enc3 >> 2;
      chr3 = (enc3 & 3) << 6 | enc4;
 
      buf.push(chr1);
 
      if (enc3 !== 64) {
        buf.push(chr2);
      }
      if (enc4 !== 64) {
        buf.push(chr3);
      }
 
      chr1 = chr2 = chr3 = '';
      enc1 = enc2 = enc3 = enc4 = '';
    } while (i < input.length);
 
    return buf;
  }
};
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9yb290L1NFUlZFUi9pbWdseS1zZGstaHRtbDUvc3JjL2pzL2xpYi9iYXNlNjQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUtBLElBQU0sT0FBTyxHQUFHLG1FQUFtRSxDQUFBOztxQkFFcEU7QUFDYixRQUFNLEVBQUMsZ0JBQUMsS0FBSyxFQUFFO0FBQ2IsUUFBSSxNQUFNLEdBQUcsRUFBRTtRQUNYLElBQUksWUFBQTtRQUFFLElBQUksWUFBQTtRQUFFLElBQUksR0FBRyxFQUFFO1FBQ3JCLElBQUksWUFBQTtRQUFFLElBQUksWUFBQTtRQUFFLElBQUksWUFBQTtRQUFFLElBQUksR0FBRyxFQUFFO1FBQzNCLENBQUMsR0FBRyxDQUFDLENBQUE7O0FBRVQsT0FBRztBQUNELFVBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUNqQixVQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDakIsVUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBOztBQUVqQixVQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQTtBQUNoQixVQUFJLEdBQUcsQUFBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUEsSUFBSyxDQUFDLEdBQUssSUFBSSxJQUFJLENBQUMsQUFBQyxDQUFBO0FBQ3RDLFVBQUksR0FBRyxBQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQSxJQUFLLENBQUMsR0FBSyxJQUFJLElBQUksQ0FBQyxBQUFDLENBQUE7QUFDdkMsVUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7O0FBRWhCLFVBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2YsWUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7T0FDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUN0QixZQUFJLEdBQUcsRUFBRSxDQUFBO09BQ1Y7O0FBRUQsWUFBTSxHQUFHLE1BQU0sR0FDWixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUNwQixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUNwQixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUNwQixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ3ZCLFVBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUN2QixVQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0tBQy9CLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUM7O0FBRTFCLFdBQU8sTUFBTSxDQUFBO0dBQ2Q7O0FBRUQsUUFBTSxFQUFDLGdCQUFDLEtBQUssRUFBRTtBQUNiLFFBQUksSUFBSSxZQUFBO1FBQUUsSUFBSSxZQUFBO1FBQUUsSUFBSSxHQUFHLEVBQUU7UUFDdkIsSUFBSSxZQUFBO1FBQUUsSUFBSSxZQUFBO1FBQUUsSUFBSSxZQUFBO1FBQUUsSUFBSSxHQUFHLEVBQUU7UUFDM0IsQ0FBQyxHQUFHLENBQUM7UUFDTCxHQUFHLEdBQUcsRUFBRSxDQUFBOzs7QUFHVixRQUFJLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQTtBQUN0QyxRQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDMUIsWUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsR0FDckUscUVBQXFFLEdBQ3JFLDRCQUE0QixDQUFDLENBQUE7S0FDcEM7QUFDRCxTQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQTs7QUFFaEQsT0FBRztBQUNELFVBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ3pDLFVBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ3pDLFVBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ3pDLFVBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBOztBQUV6QyxVQUFJLEdBQUcsQUFBQyxJQUFJLElBQUksQ0FBQyxHQUFLLElBQUksSUFBSSxDQUFDLEFBQUMsQ0FBQTtBQUNoQyxVQUFJLEdBQUcsQUFBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUEsSUFBSyxDQUFDLEdBQUssSUFBSSxJQUFJLENBQUMsQUFBQyxDQUFBO0FBQ3ZDLFVBQUksR0FBRyxBQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQSxJQUFLLENBQUMsR0FBSSxJQUFJLENBQUE7O0FBRS9CLFNBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7O0FBRWQsVUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO0FBQ2YsV0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtPQUNmO0FBQ0QsVUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO0FBQ2YsV0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtPQUNmOztBQUVELFVBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUN2QixVQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0tBRS9CLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUM7O0FBRTFCLFdBQU8sR0FBRyxDQUFBO0dBQ1g7Q0FDRiIsImZpbGUiOiIvcm9vdC9TRVJWRVIvaW1nbHktc2RrLWh0bWw1L3NyYy9qcy9saWIvYmFzZTY0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBFeHRyYWN0ZWQgZnJvbSBNaW5pZnlKcGVnIChDb3B5cmlnaHQgKGMpIDIwMTQgSGlyb2FraSBNYXRvYmEsIE1JVCBMaWNlbnNlKTpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9oTWF0b2JhL01pbmlmeUpwZWdcbiAqL1xuXG5jb25zdCBLRVlfU1RSID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89J1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGVuY29kZSAoaW5wdXQpIHtcbiAgICBsZXQgb3V0cHV0ID0gJycsXG4gICAgICAgIGNocjEsIGNocjIsIGNocjMgPSAnJyxcbiAgICAgICAgZW5jMSwgZW5jMiwgZW5jMywgZW5jNCA9ICcnLFxuICAgICAgICBpID0gMFxuXG4gICAgZG8ge1xuICAgICAgY2hyMSA9IGlucHV0W2krK11cbiAgICAgIGNocjIgPSBpbnB1dFtpKytdXG4gICAgICBjaHIzID0gaW5wdXRbaSsrXVxuXG4gICAgICBlbmMxID0gY2hyMSA+PiAyXG4gICAgICBlbmMyID0gKChjaHIxICYgMykgPDwgNCkgfCAoY2hyMiA+PiA0KVxuICAgICAgZW5jMyA9ICgoY2hyMiAmIDE1KSA8PCAyKSB8IChjaHIzID4+IDYpXG4gICAgICBlbmM0ID0gY2hyMyAmIDYzXG5cbiAgICAgIGlmIChpc05hTihjaHIyKSkge1xuICAgICAgICBlbmMzID0gZW5jNCA9IDY0XG4gICAgICB9IGVsc2UgaWYgKGlzTmFOKGNocjMpKSB7XG4gICAgICAgIGVuYzQgPSA2NFxuICAgICAgfVxuXG4gICAgICBvdXRwdXQgPSBvdXRwdXQgK1xuICAgICAgICAgS0VZX1NUUi5jaGFyQXQoZW5jMSkgK1xuICAgICAgICAgS0VZX1NUUi5jaGFyQXQoZW5jMikgK1xuICAgICAgICAgS0VZX1NUUi5jaGFyQXQoZW5jMykgK1xuICAgICAgICAgS0VZX1NUUi5jaGFyQXQoZW5jNClcbiAgICAgIGNocjEgPSBjaHIyID0gY2hyMyA9ICcnXG4gICAgICBlbmMxID0gZW5jMiA9IGVuYzMgPSBlbmM0ID0gJydcbiAgICB9IHdoaWxlIChpIDwgaW5wdXQubGVuZ3RoKVxuXG4gICAgcmV0dXJuIG91dHB1dFxuICB9LFxuXG4gIGRlY29kZSAoaW5wdXQpIHtcbiAgICBsZXQgY2hyMSwgY2hyMiwgY2hyMyA9ICcnLFxuICAgICAgZW5jMSwgZW5jMiwgZW5jMywgZW5jNCA9ICcnLFxuICAgICAgaSA9IDAsXG4gICAgICBidWYgPSBbXVxuXG4gICAgLy8gcmVtb3ZlIGFsbCBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBBLVosIGEteiwgMC05LCArLCAvLCBvciA9XG4gICAgdmFyIGJhc2U2NHRlc3QgPSAvW15BLVphLXowLTlcXCtcXC9cXD1dL2dcbiAgICBpZiAoYmFzZTY0dGVzdC5leGVjKGlucHV0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGVyZSB3ZXJlIGludmFsaWQgYmFzZTY0IGNoYXJhY3RlcnMgaW4gdGhlIGlucHV0IHRleHQuXFxuJyArXG4gICAgICAgICAgICAnVmFsaWQgYmFzZTY0IGNoYXJhY3RlcnMgYXJlIEEtWiwgYS16LCAwLTksIFxcJytcXCcsIFxcJy9cXCcsYW5kIFxcJz1cXCdcXG4nICtcbiAgICAgICAgICAgICdFeHBlY3QgZXJyb3JzIGluIGRlY29kaW5nLicpXG4gICAgfVxuICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZSgvW15BLVphLXowLTlcXCtcXC9cXD1dL2csICcnKVxuXG4gICAgZG8ge1xuICAgICAgZW5jMSA9IEtFWV9TVFIuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSlcbiAgICAgIGVuYzIgPSBLRVlfU1RSLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpXG4gICAgICBlbmMzID0gS0VZX1NUUi5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKVxuICAgICAgZW5jNCA9IEtFWV9TVFIuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSlcblxuICAgICAgY2hyMSA9IChlbmMxIDw8IDIpIHwgKGVuYzIgPj4gNClcbiAgICAgIGNocjIgPSAoKGVuYzIgJiAxNSkgPDwgNCkgfCAoZW5jMyA+PiAyKVxuICAgICAgY2hyMyA9ICgoZW5jMyAmIDMpIDw8IDYpIHwgZW5jNFxuXG4gICAgICBidWYucHVzaChjaHIxKVxuXG4gICAgICBpZiAoZW5jMyAhPT0gNjQpIHtcbiAgICAgICAgYnVmLnB1c2goY2hyMilcbiAgICAgIH1cbiAgICAgIGlmIChlbmM0ICE9PSA2NCkge1xuICAgICAgICBidWYucHVzaChjaHIzKVxuICAgICAgfVxuXG4gICAgICBjaHIxID0gY2hyMiA9IGNocjMgPSAnJ1xuICAgICAgZW5jMSA9IGVuYzIgPSBlbmMzID0gZW5jNCA9ICcnXG5cbiAgICB9IHdoaWxlIChpIDwgaW5wdXQubGVuZ3RoKVxuXG4gICAgcmV0dXJuIGJ1ZlxuICB9XG59XG4iXX0=