UNPKG

js-uploader

Version:
159 lines 7.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TaskHandler = void 0; var tslib_1 = require("tslib"); var rxjs_1 = require("rxjs"); var interface_1 = require("../../interface"); var helpers_1 = require("../helpers"); var operators_1 = require("rxjs/operators"); var modules_1 = require("../modules"); var Base_1 = require("../Base"); var shared_1 = require("../../shared"); var TaskHandler = /** @class */ (function (_super) { tslib_1.__extends(TaskHandler, _super); function TaskHandler(task, uploaderOptions) { var _this = _super.call(this, uploaderOptions.id) || this; _this.task = task; _this.uploaderOptions = uploaderOptions; return _this; } TaskHandler.prototype.computeFileHash = function (file) { return new rxjs_1.Observable(function (ob) { var sparkMd5 = new SparkMD5.ArrayBuffer(); var fileReader; var calc = function (data) { sparkMd5.append(data); var md5 = sparkMd5.end(); ob.next(md5); ob.complete(); }; if (file instanceof ArrayBuffer) { calc(file); } else { fileReader = new FileReader(); fileReader.readAsArrayBuffer(file); fileReader.onload = function (e) { var _a; calc((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.result); }; fileReader.onerror = function (e) { ob.error(e); }; } return function () { fileReader === null || fileReader === void 0 ? void 0 : fileReader.abort(); sparkMd5.destroy(); }; }); }; TaskHandler.prototype.computeFileMd5ByWorker = function (data) { var _this = this; return new rxjs_1.Observable(function (ob) { var result; var sub; if (data instanceof Blob) { sub = rxjs_1.from((result = shared_1.md5WorkerPool.execute(data).promise)).subscribe(ob); } else { sub = _this.readFile(data) .pipe(operators_1.switchMap(function (data) { return rxjs_1.from((result = shared_1.md5WorkerPool.execute(data)).promise); })) .subscribe(ob); } return function () { var _a; (_a = result === null || result === void 0 ? void 0 : result.abort) === null || _a === void 0 ? void 0 : _a.call(result); sub === null || sub === void 0 ? void 0 : sub.unsubscribe(); sub = null; }; }); }; TaskHandler.prototype.toFormData = function (params) { var formData = new FormData(); Object.keys(params).forEach(function (k) { return formData.append(k, params[k]); }); return formData; }; TaskHandler.prototype.getServerURL = function (uploadfile, chunk) { return this.createObserverble(this.uploaderOptions.requestOptions.url, this.task, uploadfile, chunk); }; TaskHandler.prototype.getRequestMethod = function (uploadfile, chunk) { return this.createObserverble(this.uploaderOptions.requestOptions.method, this.task, uploadfile, chunk); }; TaskHandler.prototype.getResponseType = function (uploadfile, chunk) { return this.createObserverble(this.uploaderOptions.requestOptions.responseType, this.task, uploadfile, chunk); }; TaskHandler.prototype.getRequestHeaders = function (uploadfile, chunk) { return this.createObserverble(this.uploaderOptions.requestOptions.headers, this.task, uploadfile, chunk); }; TaskHandler.prototype.getRequestParams = function (uploadfile, chunk, baseParams) { return this.createObserverble(this.uploaderOptions.requestOptions.body, this.task, uploadfile, chunk, baseParams); }; TaskHandler.prototype.getUploadFileByID = function (id) { var _this = this; return new rxjs_1.Observable(function (ob) { var uploadFile = modules_1.FileStore.get(id); var file$; if (uploadFile) { file$ = rxjs_1.of(uploadFile); } else { file$ = modules_1.getStorage(_this.uploaderOptions.id) .UploadFile.getItem(id) .pipe(operators_1.concatMap(function (upfile) { if (!upfile) { return rxjs_1.of(null); } var source = []; var chunkIDList = upfile.chunkIDList, chunkList = upfile.chunkList; if (chunkIDList && chunkIDList.length && (!chunkList || chunkList.length !== chunkIDList.length)) { source.push(modules_1.getStorage(_this.uploaderOptions.id) .FileChunk.getItems(chunkIDList) .pipe(operators_1.map(function (res) { return Object.values(res); }), operators_1.tap(function (chunkList) { upfile.chunkList = chunkList.filter(function (ck) { if (ck) { ck.status = ck.status === interface_1.StatusCode.Complete ? ck.status : interface_1.StatusCode.Pause; } return !!ck; }); }))); } if (!upfile.raw) { source.push(modules_1.getStorage(_this.uploaderOptions.id) .BinaryLike.getItem(upfile.id) .pipe(operators_1.tap(function (blob) { upfile.raw = blob instanceof Blob ? blob : upfile.raw; }))); } upfile.status = upfile.status === interface_1.StatusCode.Complete ? upfile.status : interface_1.StatusCode.Pause; upfile.progress = upfile.status === interface_1.StatusCode.Complete ? 100 : upfile.progress; return source.length ? rxjs_1.forkJoin(source).pipe(operators_1.mapTo(upfile)) : rxjs_1.of(upfile); }), operators_1.tap(function (upfile) { upfile && modules_1.FileStore.add(upfile); })); } var sub = file$.subscribe(ob); return function () { return sub.unsubscribe(); }; }); }; TaskHandler.prototype.readFile = function (uploadfile, start, end) { var _this = this; return new rxjs_1.Observable(function (ob) { var reader = _this.uploaderOptions.readFileFn; var res; if (typeof reader === 'function') { res = reader(_this.task, uploadfile, start, end); } else { res = helpers_1.fileReader(uploadfile, start, end); } var sub = _this.toObserverble(res).subscribe(ob); return function () { return sub.unsubscribe(); }; }); }; TaskHandler.prototype.isResumable = function () { return !!this.uploaderOptions.resumable; }; return TaskHandler; }(Base_1.default)); exports.TaskHandler = TaskHandler; //# sourceMappingURL=TaskHandler.js.map