text: import { operate } from '../util/lift';
  import { OperatorSubscriber } from './OperatorSubscriber';
  export function refCount() {
      return operate((source, subscriber) => {
          let connection = null;
          source._refCount++;
          const refCounter = new OperatorSubscriber(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