UNPKG

@reactivex/ix-es5-esm

Version:

The Interactive Extensions for JavaScript

74 lines (72 loc) 2.47 kB
import { __extends } from "tslib"; import { IterableX } from '../iterable/iterablex.js'; import { Readable } from 'stream'; var done = function (_) { return null; }; /** @ignore */ /** @ignore */ var IterableReadable = /** @class */ (function (_super) { __extends(IterableReadable, _super); function IterableReadable(source, options) { var _this = _super.call(this, options) || this; _this._pulling = false; _this._objectMode = true; _this._iterator = source[Symbol.iterator](); _this._objectMode = !options || !!options.objectMode; return _this; } IterableReadable.prototype._read = function (size) { var it = this._iterator; if (it && !this._pulling && (this._pulling = true)) { this._pulling = this._pull(it, size); } }; IterableReadable.prototype._destroy = function (err, cb) { var it = this._iterator; this._iterator = undefined; var fn = (it && (err ? it.throw : it.return)) || done; fn.call(it, err); if (cb) { cb(null); } }; // eslint-disable-next-line complexity IterableReadable.prototype._pull = function (it, size) { var innerSize = size; var objectMode = this._objectMode; var r; while (this.readable && !(r = it.next(innerSize)).done) { if (innerSize != null) { if (objectMode) { innerSize -= 1; } else { innerSize -= Buffer.byteLength(r.value || ''); } } if (!this.push(r.value) || innerSize <= 0) { break; } } if ((r && r.done) || !this.readable) { this.push(null); if (it.return) { it.return(); } } return !this.readable; }; return IterableReadable; }(Readable)); export { IterableReadable }; export function toNodeStream(source, options) { return !options || options.objectMode === true ? new IterableReadable(source, options) : new IterableReadable(source, options); } export function toNodeStreamProto(options) { return !options || options.objectMode === true ? new IterableReadable(this, options) : new IterableReadable(this, options); } IterableX.prototype.toNodeStream = toNodeStreamProto; //# sourceMappingURL=tonodestream.js.map