| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.Md5FileHasher = void 0;
- var md5_1 = require("./md5");
- // Hashes any blob
- var Md5FileHasher = /** @class */ (function () {
- function Md5FileHasher(_callback, // Callback to return the result
- _async, // Async version is not always available in a web worker
- _partSize) {
- if (_async === void 0) { _async = true; }
- if (_partSize === void 0) { _partSize = 1048576; }
- this._callback = _callback;
- this._async = _async;
- this._partSize = _partSize;
- this._configureReader();
- }
- /**
- * Hash a blob of data in the worker
- * @param blob Data to hash
- */
- Md5FileHasher.prototype.hash = function (blob) {
- var self = this;
- self._blob = blob;
- // self._length = Math.ceil(blob.size / self._partSize);
- self._part = 0;
- self._md5 = new md5_1.Md5();
- self._processPart();
- };
- Md5FileHasher.prototype._fail = function () {
- this._callback({
- success: false,
- result: 'data read failed'
- });
- };
- Md5FileHasher.prototype._hashData = function (e) {
- var self = this;
- self._md5.appendByteArray(new Uint8Array(e.target.result));
- if (self._part * self._partSize >= self._blob.size) {
- self._callback({
- success: true,
- result: self._md5.end()
- });
- }
- else {
- self._processPart();
- }
- };
- Md5FileHasher.prototype._processPart = function () {
- var self = this;
- var endbyte = 0;
- var current_part;
- self._part += 1;
- if (self._blob.size > self._partSize) { // If blob bigger then part_size we will slice it up
- endbyte = self._part * self._partSize;
- if (endbyte > self._blob.size) {
- endbyte = self._blob.size;
- }
- current_part = self._blob.slice((self._part - 1) * self._partSize, endbyte);
- }
- else {
- current_part = self._blob;
- }
- if (self._async) {
- self._reader.readAsArrayBuffer(current_part);
- }
- else {
- setTimeout(function () {
- try {
- self._hashData({
- target: {
- result: self._reader.readAsArrayBuffer(current_part)
- },
- });
- }
- catch (e) {
- self._fail();
- }
- }, 0);
- }
- };
- Md5FileHasher.prototype._configureReader = function () {
- var self = this;
- if (self._async) {
- self._reader = new FileReader();
- self._reader.onload = self._hashData.bind(self);
- self._reader.onerror = self._fail.bind(self);
- self._reader.onabort = self._fail.bind(self);
- }
- else {
- self._reader = new FileReaderSync();
- }
- };
- return Md5FileHasher;
- }());
- exports.Md5FileHasher = Md5FileHasher;
- //# sourceMappingURL=md5_file_hasher.js.map
|