aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/rxjs/src/internal/operators/repeatWhen.ts
diff options
context:
space:
mode:
authorPinapelz <yukais@pinapelz.com>2025-06-29 11:49:28 -0700
committerPinapelz <yukais@pinapelz.com>2025-06-29 11:49:28 -0700
commitd55b767039605256c736166a942a9138e3eacfd7 (patch)
tree947063b634c50d438a794325f13275e134aa5993 /node_modules/rxjs/src/internal/operators/repeatWhen.ts
parent864ce67d89c77d8ef9c3361f80d619853abcf91c (diff)
remove dev node_modules (oops)
Diffstat (limited to 'node_modules/rxjs/src/internal/operators/repeatWhen.ts')
-rw-r--r--node_modules/rxjs/src/internal/operators/repeatWhen.ts125
1 files changed, 0 insertions, 125 deletions
diff --git a/node_modules/rxjs/src/internal/operators/repeatWhen.ts b/node_modules/rxjs/src/internal/operators/repeatWhen.ts
deleted file mode 100644
index 403b2c6..0000000
--- a/node_modules/rxjs/src/internal/operators/repeatWhen.ts
+++ /dev/null
@@ -1,125 +0,0 @@
-import { Observable } from '../Observable';
-import { innerFrom } from '../observable/innerFrom';
-import { Subject } from '../Subject';
-import { Subscription } from '../Subscription';
-
-import { MonoTypeOperatorFunction, ObservableInput } from '../types';
-import { operate } from '../util/lift';
-import { createOperatorSubscriber } from './OperatorSubscriber';
-
-/**
- * Returns an Observable that mirrors the source Observable with the exception of a `complete`. If the source
- * Observable calls `complete`, this method will emit to the Observable returned from `notifier`. If that Observable
- * calls `complete` or `error`, then this method will call `complete` or `error` on the child subscription. Otherwise
- * this method will resubscribe to the source Observable.
- *
- * ![](repeatWhen.png)
- *
- * ## Example
- *
- * Repeat a message stream on click
- *
- * ```ts
- * import { of, fromEvent, repeatWhen } from 'rxjs';
- *
- * const source = of('Repeat message');
- * const documentClick$ = fromEvent(document, 'click');
- *
- * const result = source.pipe(repeatWhen(() => documentClick$));
- *
- * result.subscribe(data => console.log(data))
- * ```
- *
- * @see {@link repeat}
- * @see {@link retry}
- * @see {@link retryWhen}
- *
- * @param notifier Function that receives an Observable of notifications with
- * which a user can `complete` or `error`, aborting the repetition.
- * @return A function that returns an Observable that mirrors the source
- * Observable with the exception of a `complete`.
- * @deprecated Will be removed in v9 or v10. Use {@link repeat}'s {@link RepeatConfig#delay delay} option instead.
- * Instead of `repeatWhen(() => notify$)`, use: `repeat({ delay: () => notify$ })`.
- */
-export function repeatWhen<T>(notifier: (notifications: Observable<void>) => ObservableInput<any>): MonoTypeOperatorFunction<T> {
- return operate((source, subscriber) => {
- let innerSub: Subscription | null;
- let syncResub = false;
- let completions$: Subject<void>;
- let isNotifierComplete = false;
- let isMainComplete = false;
-
- /**
- * Checks to see if we can complete the result, completes it, and returns `true` if it was completed.
- */
- const checkComplete = () => isMainComplete && isNotifierComplete && (subscriber.complete(), true);
- /**
- * Gets the subject to send errors through. If it doesn't exist,
- * we know we need to setup the notifier.
- */
- const getCompletionSubject = () => {
- if (!completions$) {
- completions$ = new Subject();
-
- // If the call to `notifier` throws, it will be caught by the OperatorSubscriber
- // In the main subscription -- in `subscribeForRepeatWhen`.
- innerFrom(notifier(completions$)).subscribe(
- createOperatorSubscriber(
- subscriber,
- () => {
- if (innerSub) {
- subscribeForRepeatWhen();
- } else {
- // If we don't have an innerSub yet, that's because the inner subscription
- // call hasn't even returned yet. We've arrived here synchronously.
- // So we flag that we want to resub, such that we can ensure finalization
- // happens before we resubscribe.
- syncResub = true;
- }
- },
- () => {
- isNotifierComplete = true;
- checkComplete();
- }
- )
- );
- }
- return completions$;
- };
-
- const subscribeForRepeatWhen = () => {
- isMainComplete = false;
-
- innerSub = source.subscribe(
- createOperatorSubscriber(subscriber, undefined, () => {
- isMainComplete = true;
- // Check to see if we are complete, and complete if so.
- // If we are not complete. Get the subject. This calls the `notifier` function.
- // If that function fails, it will throw and `.next()` will not be reached on this
- // line. The thrown error is caught by the _complete handler in this
- // `OperatorSubscriber` and handled appropriately.
- !checkComplete() && getCompletionSubject().next();
- })
- );
-
- if (syncResub) {
- // Ensure that the inner subscription is torn down before
- // moving on to the next subscription in the synchronous case.
- // If we don't do this here, all inner subscriptions will not be
- // torn down until the entire observable is done.
- innerSub.unsubscribe();
- // It is important to null this out. Not only to free up memory, but
- // to make sure code above knows we are in a subscribing state to
- // handle synchronous resubscription.
- innerSub = null;
- // We may need to do this multiple times, so reset the flags.
- syncResub = false;
- // Resubscribe
- subscribeForRepeatWhen();
- }
- };
-
- // Start the subscription
- subscribeForRepeatWhen();
- });
-}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage