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/operators/finalize.ts | 75 ++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 node_modules/rxjs/src/internal/operators/finalize.ts (limited to 'node_modules/rxjs/src/internal/operators/finalize.ts') diff --git a/node_modules/rxjs/src/internal/operators/finalize.ts b/node_modules/rxjs/src/internal/operators/finalize.ts new file mode 100644 index 0000000..12821fd --- /dev/null +++ b/node_modules/rxjs/src/internal/operators/finalize.ts @@ -0,0 +1,75 @@ +import { MonoTypeOperatorFunction } from '../types'; +import { operate } from '../util/lift'; + +/** + * Returns an Observable that mirrors the source Observable, but will call a specified function when + * the source terminates on complete or error. + * The specified function will also be called when the subscriber explicitly unsubscribes. + * + * ## Examples + * + * Execute callback function when the observable completes + * + * ```ts + * import { interval, take, finalize } from 'rxjs'; + * + * // emit value in sequence every 1 second + * const source = interval(1000); + * const example = source.pipe( + * take(5), //take only the first 5 values + * finalize(() => console.log('Sequence complete')) // Execute when the observable completes + * ); + * const subscribe = example.subscribe(val => console.log(val)); + * + * // results: + * // 0 + * // 1 + * // 2 + * // 3 + * // 4 + * // 'Sequence complete' + * ``` + * + * Execute callback function when the subscriber explicitly unsubscribes + * + * ```ts + * import { interval, finalize, tap, noop, timer } from 'rxjs'; + * + * const source = interval(100).pipe( + * finalize(() => console.log('[finalize] Called')), + * tap({ + * next: () => console.log('[next] Called'), + * error: () => console.log('[error] Not called'), + * complete: () => console.log('[tap complete] Not called') + * }) + * ); + * + * const sub = source.subscribe({ + * next: x => console.log(x), + * error: noop, + * complete: () => console.log('[complete] Not called') + * }); + * + * timer(150).subscribe(() => sub.unsubscribe()); + * + * // results: + * // '[next] Called' + * // 0 + * // '[finalize] Called' + * ``` + * + * @param callback Function to be called when source terminates. + * @return A function that returns an Observable that mirrors the source, but + * will call the specified function on termination. + */ +export function finalize(callback: () => void): MonoTypeOperatorFunction { + return operate((source, subscriber) => { + // TODO: This try/finally was only added for `useDeprecatedSynchronousErrorHandling`. + // REMOVE THIS WHEN THAT HOT GARBAGE IS REMOVED IN V8. + try { + source.subscribe(subscriber); + } finally { + subscriber.add(callback); + } + }); +} -- cgit v1.2.3