From e4fa1e69e7ebfb627c7198fd1a9881e9327ec4d4 Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Sat, 28 Jun 2025 17:26:46 -0700 Subject: initial commit: scaffolding --- .../rxjs/src/internal/testing/HotObservable.ts | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 node_modules/rxjs/src/internal/testing/HotObservable.ts (limited to 'node_modules/rxjs/src/internal/testing/HotObservable.ts') diff --git a/node_modules/rxjs/src/internal/testing/HotObservable.ts b/node_modules/rxjs/src/internal/testing/HotObservable.ts new file mode 100644 index 0000000..c151480 --- /dev/null +++ b/node_modules/rxjs/src/internal/testing/HotObservable.ts @@ -0,0 +1,53 @@ +import { Subject } from '../Subject'; +import { Subscriber } from '../Subscriber'; +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 { observeNotification } from '../Notification'; + +export class HotObservable extends Subject implements SubscriptionLoggable { + public subscriptions: SubscriptionLog[] = []; + scheduler: Scheduler; + // @ts-ignore: Property has no initializer and is not definitely assigned + logSubscribedFrame: () => number; + // @ts-ignore: Property has no initializer and is not definitely assigned + logUnsubscribedFrame: (index: number) => void; + + constructor(public messages: TestMessage[], scheduler: Scheduler) { + super(); + this.scheduler = scheduler; + } + + /** @internal */ + protected _subscribe(subscriber: Subscriber): Subscription { + const subject: HotObservable = this; + const index = subject.logSubscribedFrame(); + const subscription = new Subscription(); + subscription.add( + new Subscription(() => { + subject.logUnsubscribedFrame(index); + }) + ); + subscription.add(super._subscribe(subscriber)); + return subscription; + } + + setup() { + const subject = this; + const messagesLength = subject.messages.length; + /* tslint:disable:no-var-keyword */ + for (let i = 0; i < messagesLength; i++) { + (() => { + const { notification, frame } = subject.messages[i]; + /* tslint:enable */ + subject.scheduler.schedule(() => { + observeNotification(notification, subject); + }, frame); + })(); + } + } +} +applyMixins(HotObservable, [SubscriptionLoggable]); -- cgit v1.2.3