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/ColdObservable.ts | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 node_modules/rxjs/src/internal/testing/ColdObservable.ts (limited to 'node_modules/rxjs/src/internal/testing/ColdObservable.ts') diff --git a/node_modules/rxjs/src/internal/testing/ColdObservable.ts b/node_modules/rxjs/src/internal/testing/ColdObservable.ts new file mode 100644 index 0000000..40cbe49 --- /dev/null +++ b/node_modules/rxjs/src/internal/testing/ColdObservable.ts @@ -0,0 +1,52 @@ +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'; +import { observeNotification } from '../Notification'; + +export class ColdObservable extends Observable 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(function (this: Observable, subscriber: Subscriber) { + const observable: ColdObservable = 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) { + const messagesLength = this.messages.length; + for (let i = 0; i < messagesLength; i++) { + const message = this.messages[i]; + subscriber.add( + this.scheduler.schedule( + (state) => { + const { message: { notification }, subscriber: destination } = state!; + observeNotification(notification, destination); + }, + message.frame, + { message, subscriber } + ) + ); + } + } +} +applyMixins(ColdObservable, [SubscriptionLoggable]); -- cgit v1.2.3