"use strict";

exports.__esModule = true;
exports.md5 = void 0;

var _sparkMd = _interopRequireDefault(require("spark-md5"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

const md5 = (file, chunkSize, callback) => {
  chunkSize = chunkSize || 2097152; // Read in chunks of 2MB

  var blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice,
      chunks = Math.ceil(file.size / chunkSize),
      currentChunk = 0,
      spark = new _sparkMd.default.ArrayBuffer(),
      fileReader = new FileReader();

  fileReader.onload = function (e) {
    console.log('read chunk nr', currentChunk + 1, 'of', chunks);
    spark.append(e.target.result); // Append array buffer

    currentChunk++;

    if (currentChunk < chunks) {
      loadNext();
    } else {
      callback(spark.end());
    }
  };

  fileReader.onerror = function () {
    console.warn('oops, something went wrong.');
  };

  function loadNext() {
    var start = currentChunk * chunkSize,
        end = start + chunkSize >= file.size ? file.size : start + chunkSize;
    fileReader.readAsArrayBuffer(blobSlice.call(file, start, end));
  }

  loadNext();
};

exports.md5 = md5;