aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/rxjs/src/internal/operators/joinAllInternals.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/operators/joinAllInternals.ts
initial commit: scaffolding
Diffstat (limited to 'node_modules/rxjs/src/internal/operators/joinAllInternals.ts')
-rw-r--r--node_modules/rxjs/src/internal/operators/joinAllInternals.ts29
1 files changed, 29 insertions, 0 deletions
diff --git a/node_modules/rxjs/src/internal/operators/joinAllInternals.ts b/node_modules/rxjs/src/internal/operators/joinAllInternals.ts
new file mode 100644
index 0000000..74876e9
--- /dev/null
+++ b/node_modules/rxjs/src/internal/operators/joinAllInternals.ts
@@ -0,0 +1,29 @@
+import { Observable } from '../Observable';
+import { ObservableInput, OperatorFunction } from '../types';
+import { identity } from '../util/identity';
+import { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';
+import { pipe } from '../util/pipe';
+import { mergeMap } from './mergeMap';
+import { toArray } from './toArray';
+
+/**
+ * Collects all of the inner sources from source observable. Then, once the
+ * source completes, joins the values using the given static.
+ *
+ * This is used for {@link combineLatestAll} and {@link zipAll} which both have the
+ * same behavior of collecting all inner observables, then operating on them.
+ *
+ * @param joinFn The type of static join to apply to the sources collected
+ * @param project The projection function to apply to the values, if any
+ */
+export function joinAllInternals<T, R>(joinFn: (sources: ObservableInput<T>[]) => Observable<T>, project?: (...args: any[]) => R) {
+ return pipe(
+ // Collect all inner sources into an array, and emit them when the
+ // source completes.
+ toArray() as OperatorFunction<ObservableInput<T>, ObservableInput<T>[]>,
+ // Run the join function on the collected array of inner sources.
+ mergeMap((sources) => joinFn(sources)),
+ // If a projection function was supplied, apply it to each result.
+ project ? mapOneOrManyArgs(project) : (identity as any)
+ );
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage