UNPKG

multitude

Version:

Comprehensive streams for push and pull

69 lines (53 loc) 6.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Subject = void 0; var _helpers = require("../../helpers"); var _from = require("../creators/from"); var _tap = require("../operators/tap"); var _Multicast = require("./Multicast"); var _pipettes = require("pipettes"); /** @ignore */ const $observer = Symbol('observer'); class Subject extends _Multicast.Multicast { static of(item, options) { const subject = new this(options); subject.next(item); return subject; } static from(item, options) { if (item.constructor === this) return item; const observable = (0, _from.from)(item); const subject = new this(options); let subscription; (0, _pipettes.into)(observable, (0, _tap.tap)({ start: subs => subscription = subs })).subscribe(subject); subject.subscribe({ error: subscription.unsubscribe.bind(subscription), complete: subscription.unsubscribe.bind(subscription) }); return subject; } constructor(options) { let observer; super(obs => { observer = obs; }, options, { onCreate: connect => connect() }); _helpers.Accessor.define(this, $observer, observer); } next(value) { return this[$observer].next(value); } error(error) { return this[$observer].error(error); } complete() { return this[$observer].complete(); } } exports.Subject = Subject; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wdXNoL2NsYXNzZXMvU3ViamVjdC50cyJdLCJuYW1lcyI6WyIkb2JzZXJ2ZXIiLCJTeW1ib2wiLCJTdWJqZWN0IiwiTXVsdGljYXN0Iiwib2YiLCJpdGVtIiwib3B0aW9ucyIsInN1YmplY3QiLCJuZXh0IiwiZnJvbSIsImNvbnN0cnVjdG9yIiwib2JzZXJ2YWJsZSIsInN1YnNjcmlwdGlvbiIsInN0YXJ0Iiwic3VicyIsInN1YnNjcmliZSIsImVycm9yIiwidW5zdWJzY3JpYmUiLCJiaW5kIiwiY29tcGxldGUiLCJvYnNlcnZlciIsIm9icyIsIm9uQ3JlYXRlIiwiY29ubmVjdCIsIkFjY2Vzc29yIiwiZGVmaW5lIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTtBQUNBLE1BQU1BLFNBQVMsR0FBR0MsTUFBTSxDQUFDLFVBQUQsQ0FBeEI7O0FBTU8sTUFBTUMsT0FBTixTQUNHQyxvQkFESCxDQUdQO0FBQ2tCLFNBQUZDLEVBQUUsQ0FBSUMsSUFBSixFQUFhQyxPQUFiLEVBQTBEO0FBQ3hFLFVBQU1DLE9BQU8sR0FBRyxJQUFJLElBQUosQ0FBZUQsT0FBZixDQUFoQjtBQUNBQyxJQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FBYUgsSUFBYjtBQUNBLFdBQU9FLE9BQVA7QUFDRDs7QUFDaUIsU0FBSkUsSUFBSSxDQUNoQkosSUFEZ0IsRUFFaEJDLE9BRmdCLEVBR0Q7QUFDZixRQUFJRCxJQUFJLENBQUNLLFdBQUwsS0FBcUIsSUFBekIsRUFBK0IsT0FBT0wsSUFBUDtBQUUvQixVQUFNTSxVQUFVLEdBQUcsZ0JBQUtOLElBQUwsQ0FBbkI7QUFDQSxVQUFNRSxPQUFPLEdBQUcsSUFBSSxJQUFKLENBQVNELE9BQVQsQ0FBaEI7QUFFQSxRQUFJTSxZQUFKO0FBQ0Esd0JBQUtELFVBQUwsRUFBaUIsY0FBSTtBQUFFRSxNQUFBQSxLQUFLLEVBQUdDLElBQUQsSUFBV0YsWUFBWSxHQUFHRTtBQUFuQyxLQUFKLENBQWpCLEVBQWtFQyxTQUFsRSxDQUNFUixPQURGO0FBSUFBLElBQUFBLE9BQU8sQ0FBQ1EsU0FBUixDQUFrQjtBQUNoQkMsTUFBQUEsS0FBSyxFQUFFSixZQUFZLENBQUNLLFdBQWIsQ0FBeUJDLElBQXpCLENBQThCTixZQUE5QixDQURTO0FBRWhCTyxNQUFBQSxRQUFRLEVBQUVQLFlBQVksQ0FBQ0ssV0FBYixDQUF5QkMsSUFBekIsQ0FBOEJOLFlBQTlCO0FBRk0sS0FBbEI7QUFLQSxXQUFPTCxPQUFQO0FBQ0Q7O0FBRU1HLEVBQUFBLFdBQVcsQ0FBQ0osT0FBRCxFQUErQjtBQUMvQyxRQUFJYyxRQUFKO0FBQ0EsVUFDR0MsR0FBRCxJQUFTO0FBQ1BELE1BQUFBLFFBQVEsR0FBR0MsR0FBWDtBQUNELEtBSEgsRUFJRWYsT0FKRixFQUtFO0FBQUVnQixNQUFBQSxRQUFRLEVBQUdDLE9BQUQsSUFBYUEsT0FBTztBQUFoQyxLQUxGOztBQU9BQyxzQkFBU0MsTUFBVCxDQUFnQixJQUFoQixFQUFzQnpCLFNBQXRCLEVBQWlDb0IsUUFBakM7QUFDRDs7QUFDTVosRUFBQUEsSUFBSSxDQUFDa0IsS0FBRCxFQUFpQjtBQUMxQixXQUFPLEtBQUsxQixTQUFMLEVBQWdCUSxJQUFoQixDQUFxQmtCLEtBQXJCLENBQVA7QUFDRDs7QUFDTVYsRUFBQUEsS0FBSyxDQUFDQSxLQUFELEVBQXFCO0FBQy9CLFdBQU8sS0FBS2hCLFNBQUwsRUFBZ0JnQixLQUFoQixDQUFzQkEsS0FBdEIsQ0FBUDtBQUNEOztBQUNNRyxFQUFBQSxRQUFRLEdBQVM7QUFDdEIsV0FBTyxLQUFLbkIsU0FBTCxFQUFnQm1CLFFBQWhCLEVBQVA7QUFDRDs7QUEvQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQdXNoIH0gZnJvbSAnQGRlZmluaXRpb25zJztcbmltcG9ydCB7IEFjY2Vzc29yIH0gZnJvbSAnQGhlbHBlcnMnO1xuaW1wb3J0IHsgZnJvbSB9IGZyb20gJy4uL2NyZWF0b3JzL2Zyb20nO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAnLi4vb3BlcmF0b3JzL3RhcCc7XG5pbXBvcnQgeyBNdWx0aWNhc3QgfSBmcm9tICcuL011bHRpY2FzdCc7XG5pbXBvcnQgeyBpbnRvIH0gZnJvbSAncGlwZXR0ZXMnO1xuXG4vKiogQGlnbm9yZSAqL1xuY29uc3QgJG9ic2VydmVyID0gU3ltYm9sKCdvYnNlcnZlcicpO1xuXG5leHBvcnQgZGVjbGFyZSBuYW1lc3BhY2UgU3ViamVjdCB7XG4gIGV4cG9ydCB0eXBlIE9wdGlvbnM8VT4gPSBNdWx0aWNhc3QuT3B0aW9uczxVPjtcbn1cblxuZXhwb3J0IGNsYXNzIFN1YmplY3Q8VCA9IGFueSwgVSBleHRlbmRzIFQgfCB2b2lkID0gVCB8IHZvaWQ+XG4gIGV4dGVuZHMgTXVsdGljYXN0PFQsIFU+XG4gIGltcGxlbWVudHMgUHVzaC5TdWJqZWN0PFQsIFU+XG57XG4gIHB1YmxpYyBzdGF0aWMgb2Y8VD4oaXRlbTogVCwgb3B0aW9ucz86IFN1YmplY3QuT3B0aW9uczxUPik6IFN1YmplY3Q8VCwgVD4ge1xuICAgIGNvbnN0IHN1YmplY3QgPSBuZXcgdGhpczxULCBUPihvcHRpb25zKTtcbiAgICBzdWJqZWN0Lm5leHQoaXRlbSk7XG4gICAgcmV0dXJuIHN1YmplY3Q7XG4gIH1cbiAgcHVibGljIHN0YXRpYyBmcm9tPFQsIFUgZXh0ZW5kcyBUIHwgdm9pZCA9IFQgfCB2b2lkPihcbiAgICBpdGVtOiBQdXNoLkNvbnZlcnRpYmxlPFQ+LFxuICAgIG9wdGlvbnM/OiBTdWJqZWN0Lk9wdGlvbnM8VT5cbiAgKTogU3ViamVjdDxULCBVPiB7XG4gICAgaWYgKGl0ZW0uY29uc3RydWN0b3IgPT09IHRoaXMpIHJldHVybiBpdGVtO1xuXG4gICAgY29uc3Qgb2JzZXJ2YWJsZSA9IGZyb20oaXRlbSk7XG4gICAgY29uc3Qgc3ViamVjdCA9IG5ldyB0aGlzKG9wdGlvbnMpO1xuXG4gICAgbGV0IHN1YnNjcmlwdGlvbjogYW55O1xuICAgIGludG8ob2JzZXJ2YWJsZSwgdGFwKHsgc3RhcnQ6IChzdWJzKSA9PiAoc3Vic2NyaXB0aW9uID0gc3VicykgfSkpLnN1YnNjcmliZShcbiAgICAgIHN1YmplY3RcbiAgICApO1xuXG4gICAgc3ViamVjdC5zdWJzY3JpYmUoe1xuICAgICAgZXJyb3I6IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZS5iaW5kKHN1YnNjcmlwdGlvbiksXG4gICAgICBjb21wbGV0ZTogc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlLmJpbmQoc3Vic2NyaXB0aW9uKVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN1YmplY3Q7XG4gIH1cbiAgcHJpdmF0ZSBbJG9ic2VydmVyXTogUHVzaC5TdWJzY3JpcHRpb25PYnNlcnZlcjxUPjtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBTdWJqZWN0Lk9wdGlvbnM8VT4pIHtcbiAgICBsZXQgb2JzZXJ2ZXI6IGFueTtcbiAgICBzdXBlcihcbiAgICAgIChvYnMpID0+IHtcbiAgICAgICAgb2JzZXJ2ZXIgPSBvYnM7XG4gICAgICB9LFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHsgb25DcmVhdGU6IChjb25uZWN0KSA9PiBjb25uZWN0KCkgfVxuICAgICk7XG4gICAgQWNjZXNzb3IuZGVmaW5lKHRoaXMsICRvYnNlcnZlciwgb2JzZXJ2ZXIpO1xuICB9XG4gIHB1YmxpYyBuZXh0KHZhbHVlOiBUKTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXNbJG9ic2VydmVyXS5uZXh0KHZhbHVlKTtcbiAgfVxuICBwdWJsaWMgZXJyb3IoZXJyb3I6IEVycm9yKTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXNbJG9ic2VydmVyXS5lcnJvcihlcnJvcik7XG4gIH1cbiAgcHVibGljIGNvbXBsZXRlKCk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzWyRvYnNlcnZlcl0uY29tcGxldGUoKTtcbiAgfVxufVxuIl19