diff options
| author | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:26:46 -0700 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:43:56 -0700 |
| commit | e4fa1e69e7ebfb627c7198fd1a9881e9327ec4d4 (patch) | |
| tree | 06284a538a6008eca75051399e47db4e5d50301c /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.ts | 29 |
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) + ); +} |
