text: import { Subscriber } from '../Subscriber'
  import { EmptyObservable } from '../observable/EmptyObservable'
  /**
   * Returns an Observable that repeats the stream of items emitted by the source Observable at most count times.
   *
   * <img src="./img/repeat.png" width="100%">
   *
   * @param {number} [count] The number of times the source Observable items are repeated, a count of 0 will yield
   * an empty Observable.
   * @return {Observable} An Observable that repeats the stream of items emitted by the source Observable at most
   * count times.
   * @method repeat
   * @owner Observable
   */
  export function repeat (count = -1) {
    return (source) => {
      if (count === 0) {
        return new EmptyObservable()
      } else if (count < 0) {
        return source.lift(new RepeatOperator(-1, source))
      } else {
        return source.lift(new RepeatOperator(count - 1, source))
      }
    }
  }
  class RepeatOperator {
    constructor (count, source) {
      this.count = count
      this.source = source
    }
    call (subscriber, source) {
      return source.subscribe(new RepeatSubscriber(subscriber, this.count, this.source))
    }
  }
  /**
   * We need this JSDoc comment for affecting ESDoc.
   * @ignore
   * @extends {Ignored}
   */
  class RepeatSubscriber extends Subscriber {
    constructor (destination, count, source) {
      super(destination)
      this.count = count
      this.source = source
    }
    complete () {
      if (!this.isStopped) {
        const { source, count } = this
        if (count === 0) {
          return super.complete()
        } else if (count > -1) {
          this.count = count - 1
        }
        source.subscribe(this._unsubscribeAndRecycle())
      }
    }
  }
  // # sourceMappingURL=repeat.js.map
  