--- /dev/null
+import { Subscriber } from '../Subscriber';
+import { empty } from '../observable/empty';
+export function repeat(count = -1) {
+ return (source) => {
+ if (count === 0) {
+ return empty();
+ }
+ 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));
+ }
+}
+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
\ No newline at end of file