UNPKG

multitude

Version:

Comprehensive streams for push and pull

44 lines (35 loc) 3.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.extract = extract; var _transform = require("../../utils/transform"); var _take = require("../filter/take"); var _pipettes = require("pipettes"); /** * Returns the first synchronous value of an Observable, if any, * `onEmpty` if none is produced, or `onError` if * the Observable errors synchronously. * When `onError` doesn't exist, `extract` will * synchronously throw. */ function extract(onEmpty, onError) { return (0, _transform.transform)(observable => { let value; let error; const subscription = (0, _pipettes.into)(observable, (0, _take.take)(1)).subscribe({ next(val) { value = [val]; }, error(reason) { error = [reason]; } }); subscription.unsubscribe(); if (error) { if (onError) return onError;else throw error[0]; } return value ? value[0] : onEmpty; }); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wdXNoL29wZXJhdG9ycy9jb25zdW1lL2V4dHJhY3QudHMiXSwibmFtZXMiOlsiZXh0cmFjdCIsIm9uRW1wdHkiLCJvbkVycm9yIiwib2JzZXJ2YWJsZSIsInZhbHVlIiwiZXJyb3IiLCJzdWJzY3JpcHRpb24iLCJzdWJzY3JpYmUiLCJuZXh0IiwidmFsIiwicmVhc29uIiwidW5zdWJzY3JpYmUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNBLE9BQVQsQ0FDTEMsT0FESyxFQUVMQyxPQUZLLEVBRzhCO0FBQ25DLFNBQU8sMEJBQVdDLFVBQUQsSUFBZ0I7QUFDL0IsUUFBSUMsS0FBSjtBQUNBLFFBQUlDLEtBQUo7QUFFQSxVQUFNQyxZQUFZLEdBQUcsb0JBQUtILFVBQUwsRUFBaUIsZ0JBQUssQ0FBTCxDQUFqQixFQUEwQkksU0FBMUIsQ0FBb0M7QUFDdkRDLE1BQUFBLElBQUksQ0FBQ0MsR0FBRCxFQUFNO0FBQ1JMLFFBQUFBLEtBQUssR0FBRyxDQUFDSyxHQUFELENBQVI7QUFDRCxPQUhzRDs7QUFJdkRKLE1BQUFBLEtBQUssQ0FBQ0ssTUFBRCxFQUFTO0FBQ1pMLFFBQUFBLEtBQUssR0FBRyxDQUFDSyxNQUFELENBQVI7QUFDRDs7QUFOc0QsS0FBcEMsQ0FBckI7QUFTQUosSUFBQUEsWUFBWSxDQUFDSyxXQUFiOztBQUVBLFFBQUlOLEtBQUosRUFBVztBQUNULFVBQUlILE9BQUosRUFBYSxPQUFPQSxPQUFQLENBQWIsS0FDSyxNQUFNRyxLQUFLLENBQUMsQ0FBRCxDQUFYO0FBQ047O0FBRUQsV0FBT0QsS0FBSyxHQUFHQSxLQUFLLENBQUMsQ0FBRCxDQUFSLEdBQWVILE9BQTNCO0FBQ0QsR0FyQk0sQ0FBUDtBQXNCRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFB1c2ggfSBmcm9tICdAZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgdHJhbnNmb3JtIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHJhbnNmb3JtJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICcuLi9maWx0ZXIvdGFrZSc7XG5pbXBvcnQgeyBpbnRvIH0gZnJvbSAncGlwZXR0ZXMnO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGZpcnN0IHN5bmNocm9ub3VzIHZhbHVlIG9mIGFuIE9ic2VydmFibGUsIGlmIGFueSxcbiAqIGBvbkVtcHR5YCBpZiBub25lIGlzIHByb2R1Y2VkLCBvciBgb25FcnJvcmAgaWZcbiAqIHRoZSBPYnNlcnZhYmxlIGVycm9ycyBzeW5jaHJvbm91c2x5LlxuICogV2hlbiBgb25FcnJvcmAgZG9lc24ndCBleGlzdCwgYGV4dHJhY3RgIHdpbGxcbiAqIHN5bmNocm9ub3VzbHkgdGhyb3cuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0PFQsIFUgPSB2b2lkLCBWID0gVT4oXG4gIG9uRW1wdHk/OiBVLFxuICBvbkVycm9yPzogVlxuKTogUHVzaC5UcmFuc2Zvcm1hdGlvbjxULCBUIHwgVSB8IFY+IHtcbiAgcmV0dXJuIHRyYW5zZm9ybSgob2JzZXJ2YWJsZSkgPT4ge1xuICAgIGxldCB2YWx1ZTogYW55O1xuICAgIGxldCBlcnJvcjogYW55O1xuXG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gaW50byhvYnNlcnZhYmxlLCB0YWtlKDEpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dCh2YWwpIHtcbiAgICAgICAgdmFsdWUgPSBbdmFsXTtcbiAgICAgIH0sXG4gICAgICBlcnJvcihyZWFzb24pIHtcbiAgICAgICAgZXJyb3IgPSBbcmVhc29uXTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBpZiAob25FcnJvcikgcmV0dXJuIG9uRXJyb3I7XG4gICAgICBlbHNlIHRocm93IGVycm9yWzBdO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlWzBdIDogKG9uRW1wdHkgYXMgVSk7XG4gIH0pO1xufVxuIl19