UNPKG

@lifaon/rx-js-light

Version:

Blazing fast Observables

86 lines (85 loc) 3.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.readBlob = void 0; var create_event_listener_1 = require("../../../../../../misc/event-listener/functions/create-event-listener.cjs"); var to_typed_event_target_1 = require("../../../../../../misc/event-listener/functions/to-typed-event-target.cjs"); var complete_notification_constant_1 = require("../../../../../../misc/notifications/built-in/complete/complete-notification.constant.cjs"); var create_error_notification_1 = require("../../../../../../misc/notifications/built-in/error/create-error-notification.cjs"); var create_abort_error_notification_1 = require("../../../../../../misc/notifications/built-in/error/derived/create-abort-error-notification.cjs"); var create_next_notification_1 = require("../../../../../../misc/notifications/built-in/next/create-next-notification.cjs"); var progress_notification_1 = require("../../../../../../misc/notifications/built-in/progress-notification.cjs"); var create_progress_from_progress_event_1 = require("../../../../../../misc/progress/create-progress-from-progress-event.cjs"); function readBlob(blob, readType) { return function (emit) { var fileReader = new FileReader(); var running = true; var end = function () { running = false; removeLoadEventListener(); removeErrorEventListener(); removeAbortEventListener(); removeProgressEventListener(); }; var next = function (value) { if (running) { emit((0, create_next_notification_1.createNextNotification)(value)); } }; var complete = function () { if (running) { end(); emit(complete_notification_constant_1.STATIC_COMPLETE_NOTIFICATION); } }; var error = function (error) { if (running) { end(); emit((0, create_error_notification_1.createErrorNotification)(error)); } }; var abort = function () { if (running) { end(); emit((0, create_abort_error_notification_1.createAbortErrorNotification)()); } }; var progress = function (progress) { if (running) { emit((0, progress_notification_1.createProgressNotification)(progress)); } }; var removeLoadEventListener = (0, create_event_listener_1.createEventListener)((0, to_typed_event_target_1.toTypedEventTarget)(fileReader), 'load', function () { next(fileReader.result); complete(); }); var removeErrorEventListener = (0, create_event_listener_1.createEventListener)((0, to_typed_event_target_1.toTypedEventTarget)(fileReader), 'error', function () { error(fileReader.error); }); var removeAbortEventListener = (0, create_event_listener_1.createEventListener)((0, to_typed_event_target_1.toTypedEventTarget)(fileReader), 'abort', abort); var removeProgressEventListener = (0, create_event_listener_1.createEventListener)((0, to_typed_event_target_1.toTypedEventTarget)(fileReader), 'progress', function (event) { progress((0, create_progress_from_progress_event_1.createProgressFromProgressEvent)(event)); }); switch (readType) { case 'data-url': fileReader.readAsDataURL(blob); break; case 'text': fileReader.readAsText(blob); break; case 'array-buffer': fileReader.readAsArrayBuffer(blob); break; default: throw new TypeError("Expected 'data-url', 'text', or 'array-buffer' as type"); } return function () { if (running) { end(); fileReader.abort(); } }; }; } exports.readBlob = readBlob;