multitude
Version:
Comprehensive streams for push and pull
44 lines (35 loc) • 3.48 kB
JavaScript
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
;