From e4fa1e69e7ebfb627c7198fd1a9881e9327ec4d4 Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Sat, 28 Jun 2025 17:26:46 -0700 Subject: initial commit: scaffolding --- node_modules/rxjs/src/internal/util/lift.ts | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 node_modules/rxjs/src/internal/util/lift.ts (limited to 'node_modules/rxjs/src/internal/util/lift.ts') diff --git a/node_modules/rxjs/src/internal/util/lift.ts b/node_modules/rxjs/src/internal/util/lift.ts new file mode 100644 index 0000000..e841ec3 --- /dev/null +++ b/node_modules/rxjs/src/internal/util/lift.ts @@ -0,0 +1,32 @@ +import { Observable } from '../Observable'; +import { Subscriber } from '../Subscriber'; +import { OperatorFunction } from '../types'; +import { isFunction } from './isFunction'; + +/** + * Used to determine if an object is an Observable with a lift function. + */ +export function hasLift(source: any): source is { lift: InstanceType['lift'] } { + return isFunction(source?.lift); +} + +/** + * Creates an `OperatorFunction`. Used to define operators throughout the library in a concise way. + * @param init The logic to connect the liftedSource to the subscriber at the moment of subscription. + */ +export function operate( + init: (liftedSource: Observable, subscriber: Subscriber) => (() => void) | void +): OperatorFunction { + return (source: Observable) => { + if (hasLift(source)) { + return source.lift(function (this: Subscriber, liftedSource: Observable) { + try { + return init(liftedSource, this); + } catch (err) { + this.error(err); + } + }); + } + throw new TypeError('Unable to lift unknown Observable type'); + }; +} -- cgit v1.2.3