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