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/toArray.ts | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 node_modules/rxjs/src/internal/operators/toArray.ts (limited to 'node_modules/rxjs/src/internal/operators/toArray.ts') diff --git a/node_modules/rxjs/src/internal/operators/toArray.ts b/node_modules/rxjs/src/internal/operators/toArray.ts new file mode 100644 index 0000000..2678472 --- /dev/null +++ b/node_modules/rxjs/src/internal/operators/toArray.ts @@ -0,0 +1,44 @@ +import { reduce } from './reduce'; +import { OperatorFunction } from '../types'; +import { operate } from '../util/lift'; + +const arrReducer = (arr: any[], value: any) => (arr.push(value), arr); + +/** + * Collects all source emissions and emits them as an array when the source completes. + * + * Get all values inside an array when the source completes + * + * ![](toArray.png) + * + * `toArray` will wait until the source Observable completes before emitting + * the array containing all emissions. When the source Observable errors no + * array will be emitted. + * + * ## Example + * + * ```ts + * import { interval, take, toArray } from 'rxjs'; + * + * const source = interval(1000); + * const example = source.pipe( + * take(10), + * toArray() + * ); + * + * example.subscribe(value => console.log(value)); + * + * // output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + * ``` + * + * @return A function that returns an Observable that emits an array of items + * emitted by the source Observable when source completes. + */ +export function toArray(): OperatorFunction { + // Because arrays are mutable, and we're mutating the array in this + // reducer process, we have to encapsulate the creation of the initial + // array within this `operate` function. + return operate((source, subscriber) => { + reduce(arrReducer, [] as T[])(source).subscribe(subscriber); + }); +} -- cgit v1.2.3