From f3b2f05bf8fc80ca20a2a5125a55868b3412e998 Mon Sep 17 00:00:00 2001 From: Nicholas Jamieson Date: Tue, 16 Mar 2021 02:18:23 +1000 Subject: [PATCH] refactor: use n-args for startWith (#6114) * refactor: use n-args for startWith * chore: update api_guardian * chore: add sigs for naughty devs * chore: update api_guardian --- api_guard/dist/types/operators/index.d.ts | 12 ++---- src/internal/operators/startWith.ts | 45 +++++++---------------- 2 files changed, 17 insertions(+), 40 deletions(-) diff --git a/api_guard/dist/types/operators/index.d.ts b/api_guard/dist/types/operators/index.d.ts index ddd88940ad..7b3d888113 100644 --- a/api_guard/dist/types/operators/index.d.ts +++ b/api_guard/dist/types/operators/index.d.ts @@ -245,14 +245,10 @@ export declare function skipWhile(predicate: BooleanConstructor): OperatorFun export declare function skipWhile(predicate: (value: T, index: number) => true): OperatorFunction; export declare function skipWhile(predicate: (value: T, index: number) => boolean): MonoTypeOperatorFunction; -export declare function startWith(scheduler: SchedulerLike): MonoTypeOperatorFunction; -export declare function startWith(v1: D, scheduler: SchedulerLike): OperatorFunction; -export declare function startWith(v1: D, v2: E, scheduler: SchedulerLike): OperatorFunction; -export declare function startWith(v1: D, v2: E, v3: F, scheduler: SchedulerLike): OperatorFunction; -export declare function startWith(v1: D, v2: E, v3: F, v4: G, scheduler: SchedulerLike): OperatorFunction; -export declare function startWith(v1: D, v2: E, v3: F, v4: G, v5: H, scheduler: SchedulerLike): OperatorFunction; -export declare function startWith(v1: D, v2: E, v3: F, v4: G, v5: H, v6: I, scheduler: SchedulerLike): OperatorFunction; -export declare function startWith(...values: A): OperatorFunction>; +export declare function startWith(value: null): OperatorFunction; +export declare function startWith(value: undefined): OperatorFunction; +export declare function startWith(...valuesAndScheduler: [...A, SchedulerLike]): OperatorFunction>; +export declare function startWith(...values: A): OperatorFunction>; export declare function subscribeOn(scheduler: SchedulerLike, delay?: number): MonoTypeOperatorFunction; diff --git a/src/internal/operators/startWith.ts b/src/internal/operators/startWith.ts index 1b89fe700d..d5cab4ced5 100644 --- a/src/internal/operators/startWith.ts +++ b/src/internal/operators/startWith.ts @@ -1,40 +1,21 @@ import { concat } from '../observable/concat'; -import { MonoTypeOperatorFunction, OperatorFunction, SchedulerLike, ValueFromArray } from '../types'; +import { OperatorFunction, SchedulerLike, ValueFromArray } from '../types'; import { popScheduler } from '../util/args'; import { operate } from '../util/lift'; -/* tslint:disable:max-line-length */ -/** @deprecated The scheduler argument is deprecated, use scheduled and concatAll. Details: https://rxjs.dev/deprecations/scheduler-argument */ -export function startWith(scheduler: SchedulerLike): MonoTypeOperatorFunction; -/** @deprecated The scheduler argument is deprecated, use scheduled and concatAll. Details: https://rxjs.dev/deprecations/scheduler-argument */ -export function startWith(v1: D, scheduler: SchedulerLike): OperatorFunction; -/** @deprecated The scheduler argument is deprecated, use scheduled and concatAll. Details: https://rxjs.dev/deprecations/scheduler-argument */ -export function startWith(v1: D, v2: E, scheduler: SchedulerLike): OperatorFunction; -/** @deprecated The scheduler argument is deprecated, use scheduled and concatAll. Details: https://rxjs.dev/deprecations/scheduler-argument */ -export function startWith(v1: D, v2: E, v3: F, scheduler: SchedulerLike): OperatorFunction; -/** @deprecated The scheduler argument is deprecated, use scheduled and concatAll. Details: https://rxjs.dev/deprecations/scheduler-argument */ -export function startWith(v1: D, v2: E, v3: F, v4: G, scheduler: SchedulerLike): OperatorFunction; -/** @deprecated The scheduler argument is deprecated, use scheduled and concatAll. Details: https://rxjs.dev/deprecations/scheduler-argument */ -export function startWith( - v1: D, - v2: E, - v3: F, - v4: G, - v5: H, - scheduler: SchedulerLike -): OperatorFunction; -/** @deprecated The scheduler argument is deprecated, use scheduled and concatAll. Details: https://rxjs.dev/deprecations/scheduler-argument */ -export function startWith( - v1: D, - v2: E, - v3: F, - v4: G, - v5: H, - v6: I, - scheduler: SchedulerLike -): OperatorFunction; +// Devs are more likely to pass null or undefined than they are a scheduler +// without accompanying values. To make things easier for (naughty) devs who +// use the `strictNullChecks: false` TypeScript compiler option, these +// overloads with explicit null and undefined values are included. -export function startWith(...values: A): OperatorFunction>; +export function startWith(value: null): OperatorFunction; +export function startWith(value: undefined): OperatorFunction; + +/** @deprecated The scheduler argument is deprecated, use scheduled and concatAll. Details: https://rxjs.dev/deprecations/scheduler-argument */ +export function startWith( + ...valuesAndScheduler: [...A, SchedulerLike] +): OperatorFunction>; +export function startWith(...values: A): OperatorFunction>; /** * Returns an observable that, at the moment of subscription, will synchronously emit all