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/observable/range.ts | 93 ++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 node_modules/rxjs/src/internal/observable/range.ts (limited to 'node_modules/rxjs/src/internal/observable/range.ts') diff --git a/node_modules/rxjs/src/internal/observable/range.ts b/node_modules/rxjs/src/internal/observable/range.ts new file mode 100644 index 0000000..cfc82cf --- /dev/null +++ b/node_modules/rxjs/src/internal/observable/range.ts @@ -0,0 +1,93 @@ +import { SchedulerLike } from '../types'; +import { Observable } from '../Observable'; +import { EMPTY } from './empty'; + +export function range(start: number, count?: number): Observable; + +/** + * @deprecated The `scheduler` parameter will be removed in v8. Use `range(start, count).pipe(observeOn(scheduler))` instead. Details: Details: https://rxjs.dev/deprecations/scheduler-argument + */ +export function range(start: number, count: number | undefined, scheduler: SchedulerLike): Observable; + +/** + * Creates an Observable that emits a sequence of numbers within a specified + * range. + * + * Emits a sequence of numbers in a range. + * + * ![](range.png) + * + * `range` operator emits a range of sequential integers, in order, where you + * select the `start` of the range and its `length`. By default, uses no + * {@link SchedulerLike} and just delivers the notifications synchronously, but may use + * an optional {@link SchedulerLike} to regulate those deliveries. + * + * ## Example + * + * Produce a range of numbers + * + * ```ts + * import { range } from 'rxjs'; + * + * const numbers = range(1, 3); + * + * numbers.subscribe({ + * next: value => console.log(value), + * complete: () => console.log('Complete!') + * }); + * + * // Logs: + * // 1 + * // 2 + * // 3 + * // 'Complete!' + * ``` + * + * @see {@link timer} + * @see {@link interval} + * + * @param start The value of the first integer in the sequence. + * @param count The number of sequential integers to generate. + * @param scheduler A {@link SchedulerLike} to use for scheduling the emissions + * of the notifications. + * @return An Observable of numbers that emits a finite range of sequential integers. + */ +export function range(start: number, count?: number, scheduler?: SchedulerLike): Observable { + if (count == null) { + // If one argument was passed, it's the count, not the start. + count = start; + start = 0; + } + + if (count <= 0) { + // No count? We're going nowhere. Return EMPTY. + return EMPTY; + } + + // Where the range should stop. + const end = count + start; + + return new Observable( + scheduler + ? // The deprecated scheduled path. + (subscriber) => { + let n = start; + return scheduler.schedule(function () { + if (n < end) { + subscriber.next(n++); + this.schedule(); + } else { + subscriber.complete(); + } + }); + } + : // Standard synchronous range. + (subscriber) => { + let n = start; + while (n < end && !subscriber.closed) { + subscriber.next(n++); + } + subscriber.complete(); + } + ); +} -- cgit v1.2.3