Actualizacion maquina principal
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / rxjs / src / internal / testing / ColdObservable.ts
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/rxjs/src/internal/testing/ColdObservable.ts b/.config/coc/extensions/node_modules/coc-prettier/node_modules/rxjs/src/internal/testing/ColdObservable.ts
new file mode 100644 (file)
index 0000000..29f620e
--- /dev/null
@@ -0,0 +1,48 @@
+import { Observable } from '../Observable';
+import { Subscription } from '../Subscription';
+import { Scheduler } from '../Scheduler';
+import { TestMessage } from './TestMessage';
+import { SubscriptionLog } from './SubscriptionLog';
+import { SubscriptionLoggable } from './SubscriptionLoggable';
+import { applyMixins } from '../util/applyMixins';
+import { Subscriber } from '../Subscriber';
+
+/**
+ * We need this JSDoc comment for affecting ESDoc.
+ * @ignore
+ * @extends {Ignored}
+ */
+export class ColdObservable<T> extends Observable<T> implements SubscriptionLoggable {
+  public subscriptions: SubscriptionLog[] = [];
+  scheduler: Scheduler;
+  logSubscribedFrame: () => number;
+  logUnsubscribedFrame: (index: number) => void;
+
+  constructor(public messages: TestMessage[],
+              scheduler: Scheduler) {
+    super(function (this: Observable<T>, subscriber: Subscriber<any>) {
+      const observable: ColdObservable<T> = this as any;
+      const index = observable.logSubscribedFrame();
+      const subscription = new Subscription();
+      subscription.add(new Subscription(() => {
+        observable.logUnsubscribedFrame(index);
+      }));
+      observable.scheduleMessages(subscriber);
+      return subscription;
+    });
+    this.scheduler = scheduler;
+  }
+
+  scheduleMessages(subscriber: Subscriber<any>) {
+    const messagesLength = this.messages.length;
+    for (let i = 0; i < messagesLength; i++) {
+      const message = this.messages[i];
+      subscriber.add(
+        this.scheduler.schedule(({ message, subscriber }) => { message.notification.observe(subscriber); },
+          message.frame,
+          { message, subscriber })
+      );
+    }
+  }
+}
+applyMixins(ColdObservable, [SubscriptionLoggable]);