Buckets:
| import { Observable } from '../Observable'; | |
| import { Subscription } from '../Subscription'; | |
| import { refCount as higherOrderRefCount } from '../operators/refCount'; | |
| import { createOperatorSubscriber } from '../operators/OperatorSubscriber'; | |
| import { hasLift } from '../util/lift'; | |
| export class ConnectableObservable extends Observable { | |
| constructor(source, subjectFactory) { | |
| super(); | |
| this.source = source; | |
| this.subjectFactory = subjectFactory; | |
| this._subject = null; | |
| this._refCount = 0; | |
| this._connection = null; | |
| if (hasLift(source)) { | |
| this.lift = source.lift; | |
| } | |
| } | |
| _subscribe(subscriber) { | |
| return this.getSubject().subscribe(subscriber); | |
| } | |
| getSubject() { | |
| const subject = this._subject; | |
| if (!subject || subject.isStopped) { | |
| this._subject = this.subjectFactory(); | |
| } | |
| return this._subject; | |
| } | |
| _teardown() { | |
| this._refCount = 0; | |
| const { _connection } = this; | |
| this._subject = this._connection = null; | |
| _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe(); | |
| } | |
| connect() { | |
| let connection = this._connection; | |
| if (!connection) { | |
| connection = this._connection = new Subscription(); | |
| const subject = this.getSubject(); | |
| connection.add(this.source.subscribe(createOperatorSubscriber(subject, undefined, () => { | |
| this._teardown(); | |
| subject.complete(); | |
| }, (err) => { | |
| this._teardown(); | |
| subject.error(err); | |
| }, () => this._teardown()))); | |
| if (connection.closed) { | |
| this._connection = null; | |
| connection = Subscription.EMPTY; | |
| } | |
| } | |
| return connection; | |
| } | |
| refCount() { | |
| return higherOrderRefCount()(this); | |
| } | |
| } | |
| //# sourceMappingURL=ConnectableObservable.js.map |
Xet Storage Details
- Size:
- 1.98 kB
- Xet hash:
- 6b1adb6fefad920662814da80e93017abe22b2df43e57152c750a3253e65b0ce
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.