aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/rxjs/src/internal/util/lift.ts
diff options
context:
space:
mode:
authorPinapelz <yukais@pinapelz.com>2025-06-28 17:26:46 -0700
committerPinapelz <yukais@pinapelz.com>2025-06-28 17:43:56 -0700
commite4fa1e69e7ebfb627c7198fd1a9881e9327ec4d4 (patch)
tree06284a538a6008eca75051399e47db4e5d50301c /node_modules/rxjs/src/internal/util/lift.ts
initial commit: scaffolding
Diffstat (limited to 'node_modules/rxjs/src/internal/util/lift.ts')
-rw-r--r--node_modules/rxjs/src/internal/util/lift.ts32
1 files changed, 32 insertions, 0 deletions
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<typeof Observable>['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<T, R>(
+ init: (liftedSource: Observable<T>, subscriber: Subscriber<R>) => (() => void) | void
+): OperatorFunction<T, R> {
+ return (source: Observable<T>) => {
+ if (hasLift(source)) {
+ return source.lift(function (this: Subscriber<R>, liftedSource: Observable<T>) {
+ try {
+ return init(liftedSource, this);
+ } catch (err) {
+ this.error(err);
+ }
+ });
+ }
+ throw new TypeError('Unable to lift unknown Observable type');
+ };
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage