import { operate } from '../util/lift'; import { createOperatorSubscriber } from './OperatorSubscriber'; export function refCount() { return operate((source, subscriber) => { let connection = null; source._refCount++; const refCounter = createOperatorSubscriber(subscriber, undefined, undefined, undefined, () => { if (!source || source._refCount <= 0 || 0 < --source._refCount) { connection = null; return; } const sharedConnection = source._connection; const conn = connection; connection = null; if (sharedConnection && (!conn || sharedConnection === conn)) { sharedConnection.unsubscribe(); } subscriber.unsubscribe(); }); source.subscribe(refCounter); if (!refCounter.closed) { connection = source.connect(); } }); } //# sourceMappingURL=refCount.js.map