Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

4776 add doc ur ls to deprecation messages #5128

Conversation

BioPhoton
Copy link
Contributor

@BioPhoton BioPhoton commented Nov 7, 2019

WORK IN PROGRESS

Related to #4776

Migration-Timeline

The migration timeline is here to support you in the following things:

Core Features

  • Getting a detailed explanation on why a deprecation happened (reason)
  • Elaborating the different between the deprecated version and the new version (implications)
    • Code examples of the deprecated and the new version
  • Linking and navigation on release level as well as on item level "deep-link-able"

Optional Features (after core features are done)

  • Missing migration items resolves in a suggestion to open an issue.
    • If deprecation information does not exist suggest to open an issue.
    • Implement Link to docs issue template
    • Use pre-fill options to suggest useful issue content
  • Migration over compat-layer
  • Migration over tooling
  • Manual Migration suggestions i.e. what happened in this relese e.g. import path changes

Other Infos:


Current Progress

UI

  • Create navigation bar for releases
  • Create list of releases
    • Create Release UI element
    • Create list of deprecations
      • Create Deprecation UI element
    • Create list of breaking changes
      • Create BreakingChange UI element

Functionality

  • Decide on data structure
    • Implement server to client store parser and formatter
    • Implement client store to view parser and formatter
  • Decide on navigation strategy
    • Implement navigation to deprecation release
    • Implement navigation to deprecation item
  • Decide on how to deal with "release panel open" state

Data
Code:

  • Deprecation
    • Ensure breakingChange exists if not autogenerate
  • BreakigChange
    • Ensure breakingChange MID fields reuse MID fields from related deprecation

Data

Manual work:

Release

  • version: Check tag
  • date: Find version on npm. Inspect HTML to get date
    Examples for estimated dates:
    • YYYY
    • YYYY-MM
    • YYYY-MM-DD

Deprecation

  • subject, subjectApiSymbol, subjectAction: Align with others
  • sourceLink: branch and loc correct
  • deprecationMsgCode: check Nicolas suggestions here
  • reason: Can be a lill more wordy than deprecationMsgCode
  • implication: Code description to spot the difference
  • exampleBefore, exampleAfter see interface docs

  • 5.3.0

    • Deprecations:
    • 5.3.0_deprecation-symbol-$$rxSubscriber-deprecated
    • 5.3.0_deprecation-symbol-$$iterator-deprecated
  • 6.0.0-alpha.3

    • Deprecations:
    • 6.0.0-alpha.3_deprecation-function-last-argument-resultSelector-deprecated
    • 6.0.0-alpha.3_deprecation-function-first-argument-resultSelector-deprecated
  • 6.0.0-alpha.4

    • BreakingChanges:
    • 6.0.0-alpha.4_breakingChange-function-last-argument-resultSelector-removed-deprecated
    • 6.0.0-alpha.4_breakingChange-function-first-argument-resultSelector-removed-deprecated
  • 6.0.0-beta.4

    • Deprecations:
    • 6.0.0-beta.4_deprecation-function-never-deprecated
    • 6.0.0-beta.4_deprecation-function-empty-deprecated
    • 6.0.0-beta.4_deprecation-class-WebSocketSubject-argument-resultSelector-deprecated
  • 6.0.0-rc.0

    • Deprecations:
    • 6.0.0-rc.0_deprecation-function-fromEventPattern-argument-resultSelector-deprecated
    • 6.0.0-rc.0_deprecation-function-fromEvent-argument-resultSelector-deprecated
    • 6.0.0-rc.0_deprecation-function-bindNodeCallback-argument-resultSelector-deprecated
    • 6.0.0-rc.0_deprecation-function-bindCallback-argument-resultSelector-deprecated
    • 6.0.0-rc.0_deprecation-function-forkJoin-argument-resultSelector-deprecated
    • 6.0.0-rc.0_deprecation-function-zip-argument-resultSelector-deprecated
    • 6.0.0-rc.0_deprecation-function-switchMap-argument-resultSelector-deprecated
    • 6.0.0-rc.0_deprecation-function-switchMapTo-argument-resultSelector-deprecated
    • 6.0.0-rc.0_deprecation-function-concatMap-argument-resultSelector-deprecated
    • 6.0.0-rc.0_deprecation-function-concatMapTo-argument-resultSelector-deprecated
    • 6.0.0-rc.0_deprecation-function-mergeMap-argument-resultSelector-deprecated
    • 6.0.0-rc.0_deprecation-function-mergeMapTo-argument-resultSelector-deprecated
    • 6.0.0-rc.0_deprecation-function-exhaustMap-argument-resultSelector-deprecated
    • 6.0.0-rc.0_deprecation-function-combineLatest-deprecated
    • 6.0.0-rc.0_deprecation-function-merge-deprecated
    • 6.0.0-rc.0_deprecation-function-concat-deprecated
    • 6.0.0-rc.0_deprecation-function-zip-deprecated
  • 6.0.0-rc.1

    • Deprecations:
    • 6.0.0-rc.1_deprecation-class-Observable-static-property-if-deprecated
    • 6.0.0-rc.1_deprecation-class-Observable-static-property-throw-deprecated
  • 6.0.0-tenacious-rc.2

    • 6.0.0-tenacious-rc.2_deprecation-class-SubscribeOnObservable-method-subscribe-deprecated
    • 6.0.0-tenacious-rc.2_deprecation-class-AjaxObservable-method-subscribe-to-private
    • 6.0.0-tenacious-rc.2_deprecation-class-Subscriber-method-unsubscribeAndRecycle-deprecated
    • 6.0.0-tenacious-rc.2_deprecation-class-TimeoutWithSubscriber-method-unsubscribe-deprecated
    • 6.0.0-tenacious-rc.2_deprecation-class-ConnectableObservable-method-subscribe-deprecated
    • 6.0.0-tenacious-rc.2_deprecation-class-RepeatWhenSubscriber-method-unsubscribe-deprecated
    • 6.0.0-tenacious-rc.2_deprecation-class-RepeatWhenSubscriber-method-unsubscribeAndRecycle-deprecated
    • 6.0.0-tenacious-rc.2_deprecation-class-WindowToggleSubscriber-method-unsubscribe-deprecated
    • 6.0.0-tenacious-rc.2_deprecation-class-WindowSubscriber-method-unsubscribe-deprecated
    • 6.0.0-tenacious-rc.2_deprecation-class-GroupBySubscriber-method-unsubscribe-deprecated
    • 6.0.0-tenacious-rc.2_deprecation-class-GroupedObservable-method-subscribe-deprecated
    • 6.0.0-tenacious-rc.2_deprecation-class-BufferWhenSubscriber-method-unsubscribe-deprecated
    • 6.0.0-tenacious-rc.2_deprecation-class-BufferTimeSubscriber-method-subscribe-deprecated
    • 6.0.0-tenacious-rc.2_deprecation-class-AsyncAction-method-unsubscribe-deprecated
    • 6.0.0-tenacious-rc.2_deprecation-class-Subscriber-method-unsubscribe-deprecated
    • 6.0.0-tenacious-rc.2_deprecation-class-Subscriber-method-trySubscribe-to-private
    • 6.0.0-tenacious-rc.2_deprecation-class-Subject-method-unsubscribeAndRecycle-deprecated
    • 6.0.0-tenacious-rc.2_deprecation-class-Subject-method-subscribe-deprecated
    • 6.0.0-tenacious-rc.2_deprecation-class-BehaviorSubject-method-subscribe-deprecated
  • 6.0.0-turbo-rc.4

    • 6.0.0-turbo-rc.4_deprecation-class-GroupedObservable-constructor-deprecated
  • 6.0.0-tactical-rc.1

    • Deprecations:
    • 6.0.0-tactical-rc.1_deprecation-class-Scheduler-deprecated
  • 6.1.0

    • Deprecations:
    • 6.1.0_deprecation-interface-ObservableLike-deprecated
    • 6.1.0_deprecation-class-AsyncScheduler-property-active-deprecated
    • 6.1.0_deprecation-class-AsyncScheduler-property-scheduled-deprecated
  • 6.2.0

    • Deprecations:
    • 6.2.0_deprecation-function-race-deprecated
  • 6.2.1

    • 6.2.1_deprecation-function-delayWhen-constructor-deprecated
  • 6.3.3

    • 6.3.3_deprecation-const-rxSubscriber-deprecated
  • 6.4.0

    • Deprecations:
    • 6.4.0_deprecation-class-Observable-subscribe-argument-nextCallback-deprecated
    • 6.4.0_deprecation-class-Observable-subscribe-argument-errorCallback-deprecated
    • 6.4.0_deprecation-class-Observable-subscribe-argument-completeCallback-deprecated
    • 6.4.0_deprecation-function-tap-argument-nextCallback-deprecated
    • 6.4.0_deprecation-function-tap-argument-errorCallback-deprecated
    • 6.4.0_deprecation-function-tap-argument-completeCallback-deprecated
    • 6.4.0_deprecation-class-Subject-static-create-deprecated
    • 6.4.0_deprecation-interface-Subscribable-nextCallback-deprecated
    • 6.4.0_deprecation-interface-Subscribable-errorCallback-deprecated
    • 6.4.0_deprecation-interface-Subscribable-completeCallback-deprecated
    • 6.4.0_deprecation-class-Observable-property-create-deprecated
    • 6.4.0_deprecation-class-TimeInterval-deprecated
  • 6.5.0

    • Deprecations:
    • 6.5.0_deprecation-function-from-argument-scheduler-deprecated
    • 6.5.0_deprecation-function-of-scheduler
    • 6.5.0_deprecation-function-combineLatest-argument-scheduler-deprecated
    • 6.5.0_deprecation-function-combineLatest-argument-resultSelector-deprecated
    • 6.5.0_deprecation-function-combineLatest-multiple-arguments-deprecated
    • 6.5.0_deprecation-function-forkJoin-multiple-arguments-deprecated
    • 6.5.0_deprecation-function-partition-deprecated
  • 6.5.1

    • Deprecations:
    • 6.5.1_deprecation-enum-NotificationKind-deprecated
  • 7.0.0-alpha.0

    • Deprecations:
    • 7.0.0-alpha.0_deprecation-function-concat-scheduler
    • 7.0.0-alpha.0_deprecation-function-of-generic-argument-deprecated
    • 7.0.0-alpha.0_deprecation-function-of-scheduler
    • 7.0.0-alpha.0_deprecation-function-merge-scheduler
    • 7.0.0-alpha.0_deprecation-function-startWith-scheduler
    • 7.0.0-alpha.0_deprecation-function-endWith-scheduler
    • 7.0.0-alpha.0_deprecation-class-TestScheduler-property-hotObservables-deprecated
    • 7.0.0-alpha.0_deprecation-class-TestScheduler-property-coldObservables-deprecated
    • 7.0.0-alpha.0_deprecation-class-VirtualTimeScheduler-property-frameTimeFactor-deprecated
    • 7.0.0-alpha.0_deprecation-class-VirtualTimeScheduler-property-index-deprecated

MOVE
Due to folder structure changes from v5 to v6 I have to move several results from here:
https://github.com/search?utf8=%E2%9C%93&q=%5C%40deprecated+repo%3AReactiveX%2Frxjs+created%3A%22%3C2018-04-11%22+repo%3AReactiveX%2Frxjs%2Ftree%2F5.x+path%3A%2Fsrc&type=Code&ref=advsearch&l=&l=

Edge Cases to clarify


First Draft

migration-timeline

`
},
{
subject: 'combineLatest',
Copy link
Collaborator

@cartant cartant Nov 17, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Regarding the 'implication', I think it should be an explanation that accompanies the 'before deprecation' and 'after deprecation' snippets. That is, it should explain what's different between the two so that users don't have to try to spot the differences themselves.

Reason

The reason doesn't seem quite right, to me.

My understanding is not that scheduling is going to be released as a separate package, rather that it is only going to be used where appropriate.

ATM, there are signatures all over the place that include optional scheduler parameters.

The means that the implementation needs to check for a scheduler, etc., which references/imports the scheduling and prevents it from being tree-shaken.

Implication

I would say something like:

For combineLatest, the removal of the scheduler parameter means that if callers want notifications to be scheduled, they will have to use observeOn.

Before Deprecation

import { combineLatest, asyncScheduler } from "rxjs";
combineLatest(a$, b$, asyncScheduler).subscribe({
  next: ([a, b]) => console.log(a, b)
});

After Deprecation

import { combineLatest, asyncScheduler, observeOn } from "rxjs";
combineLatest(a$, b$).pipe(
  observeOn(asyncScheduler)
).subscribe({
  next: ([a, b]) => console.log(a, b)
});

@cartant
Copy link
Collaborator

cartant commented Nov 18, 2019

My thoughts on making the deprecation messages less wordy and easier to interpret in linter output. Whether or not it's worth losing the link stuff to make said output easier on the eye - at the expense of losing the links in the docs, IDK. Maybe.

Also, the linter output really needs to be accompanied by a URL that takes users to the relevant deprecation information in the docs. IMO, code examples, etc. should be moved there and out of the messages. Similarly, I don't think there is any need for the message to say when something is going to be removed, etc. The messages should be as plain and direct as possible, IMO, and should link to the docs.

Thoughts below are arranged as:

[link to deprecation]
[current message]
[what I think the message should be]

* @deprecated Deprecated in favor of using {@link NEVER} constant.

Deprecated in favor of using {@link NEVER} constant.
use the NEVER constant instead

* @deprecated Deprecated in favor of using {@link index/EMPTY} constant, or {@link scheduled} (e.g. `scheduled([], scheduler)`)

Deprecated in favor of using {@link index/EMPTY} constant, or {@link scheduled} (e.g. `scheduled([], scheduler)`)
use the EMPTY constant or scheduled([], scheduler) instead

/** @deprecated use {@link deserializer} */

use {@link deserializer}
use deserializer instead

* @deprecated Deprecated in favor of static {@link combineLatest}.

Deprecated in favor of static {@link combineLatest}.
use the static combineLatest instead

* @deprecated Deprecated in favor of static {@link merge}.

Deprecated in favor of static {@link merge}.
use the static merge instead

* @deprecated Deprecated in favor of static {@link zip}.

Deprecated in favor of static {@link zip}.
use the static zip instead

* @deprecated Deprecated in favor of static {@link concat}.

Deprecated in favor of static {@link concat}.
use the static concat instead

-
use the map operator instead of a result selector

/** @deprecated */

-
use the map operator instead of a result selector

/** @deprecated resultSelector is no longer supported, pipe to map instead */

resultSelector is no longer supported, pipe to map instead
use the map operator instead of a result selector

/** @deprecated resultSelector is no longer supported. Switch to using switchMap with an inner map */

resultSelector is no longer supported. Switch to using switchMap with an inner map
use the map operator, on the inner observable, instead of a result selector

/** @deprecated resultSelector no longer supported, use inner map instead */

resultSelector no longer supported, use inner map instead
use the map operator, on the inner observable, instead of a result selector

/** @deprecated resultSelector no longer supported, use inner map instead */

resultSelector no longer supported, use inner map instead
use the map operator, on the inner observable, instead of a result selector

/** @deprecated resultSelector is no longer supported. Use inner map instead. */

resultSelector is no longer supported. Use inner map instead.
use the map operator, on the inner observable, instead of a result selector

/** @deprecated resultSelector is no longer supported, use inner map instead */

resultSelector is no longer supported, use inner map instead
use the map operator, on the inner observable, instead of a result selector

/** @deprecated resultSelector no longer supported, pipe to map instead */

resultSelector no longer supported, pipe to map instead
use the map operator instead of a result selector

/** @deprecated resultSelector no longer supported, pipe to map instead */

resultSelector no longer supported, pipe to map instead
use the map operator instead of a result selector

/** @deprecated resultSelector is deprecated, pipe to map instead */

resultSelector is deprecated, pipe to map instead
use the map operator instead of a result selector

/** @deprecated resultSelector is no longer supported, use a mapping function. */

resultSelector is no longer supported, use a mapping function.
use the map operator instead of a result selector

/** @deprecated resultSelector is deprecated, pipe to map instead */

resultSelector is deprecated, pipe to map instead
use the map operator instead of a result selector

* @deprecated Scheduler is an internal implementation detail of RxJS, and

Scheduler is an internal implementation detail of RxJS, and should not be used directly. Rather, create your own class and implement SchedulerLike
internal use only - create your own class and implement SchedulerLike instead

https://github.com/ReactiveX/rxjs/blob/6.0.0-rc.1/src/internal/Observable.ts#L260

In favor of iif creation function: import { iif } from 'rxjs';
renamed - use iif instead

https://github.com/ReactiveX/rxjs/blob/6.0.0-rc.1/src/internal/Observable.ts#L265

In favor of throwError creation function: import { throwError } from 'rxjs';
renamed - use throwError instead

* @deprecated Deprecated in favor of static {@link race}.

Deprecated in favor of static {@link race}.
use the static race instead

https://github.com/ReactiveX/rxjs/blob/6.4.0/src/internal/Observable.ts#L74

Use an observer instead of a complete callback
use an observer instead of separate callbacks

https://github.com/ReactiveX/rxjs/blob/6.4.0/src/internal/Observable.ts#L76

Use an observer instead of a error callback
use an observer instead of separate callbacks

https://github.com/ReactiveX/rxjs/blob/6.4.0/src/internal/Observable.ts#L78

Use an observer instead of a complete callback
use an observer instead of separate callbacks

https://github.com/ReactiveX/rxjs/blob/6.4.0/src/internal/operators/tap.ts#L9

Use an observer instead of a complete callback
use an observer instead of separate callbacks

https://github.com/ReactiveX/rxjs/blob/6.4.0/src/internal/operators/tap.ts#L11

Use an observer instead of a error callback
use an observer instead of separate callbacks

https://github.com/ReactiveX/rxjs/blob/6.4.0/src/internal/operators/tap.ts#L13

Use an observer instead of a complete callback
use an observer instead of separate callbacks

https://github.com/ReactiveX/rxjs/blob/6.4.0/src/internal/Observable.ts#L53

use new Observable() instead
use new Observable() instead

https://github.com/ReactiveX/rxjs/blob/6.4.0/src/internal/operators/timeInterval.ts#L70

exposed API, use as interface only.
// This is a TODO. Ignore this for now. The deprecation isn't useful ATM.

https://github.com/ReactiveX/rxjs/blob/6.3.0/src/internal/types.ts#L49

use {@link InteropObservable }
use InteropObservable instead

/** @deprecated resultSelector no longer supported, pipe to map instead */
export function combineLatest<O1 extends ObservableInput<any>, R>(sources: [O1], resultSelector: (v1: ObservedValueOf<O1>) => R, scheduler?: SchedulerLike): Observable<R>;
/** @deprecated resultSelector no longer supported, pipe to map instead */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, R>(sources: [O1, O2], resultSelector: (v1: ObservedValueOf<O1>, v2: ObservedValueOf<O2>) => R, scheduler?: SchedulerLike): Observable<R>;
/** @deprecated resultSelector no longer supported, pipe to map instead */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, R>(sources: [O1, O2, O3], resultSelector: (v1: ObservedValueOf<O1>, v2: ObservedValueOf<O2>, v3: ObservedValueOf<O3>) => R, scheduler?: SchedulerLike): Observable<R>;
/** @deprecated resultSelector no longer supported, pipe to map instead */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, O4 extends ObservableInput<any>, R>(sources: [O1, O2, O3, O4], resultSelector: (v1: ObservedValueOf<O1>, v2: ObservedValueOf<O2>, v3: ObservedValueOf<O3>, v4: ObservedValueOf<O4>) => R, scheduler?: SchedulerLike): Observable<R>;
/** @deprecated resultSelector no longer supported, pipe to map instead */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, O4 extends ObservableInput<any>, O5 extends ObservableInput<any>, R>(sources: [O1, O2, O3, O4, O5], resultSelector: (v1: ObservedValueOf<O1>, v2: ObservedValueOf<O2>, v3: ObservedValueOf<O3>, v4: ObservedValueOf<O4>, v5: ObservedValueOf<O5>) => R, scheduler?: SchedulerLike): Observable<R>;
/** @deprecated resultSelector no longer supported, pipe to map instead */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, O4 extends ObservableInput<any>, O5 extends ObservableInput<any>, O6 extends ObservableInput<any>, R>(sources: [O1, O2, O3, O4, O5, O6], resultSelector: (v1: ObservedValueOf<O1>, v2: ObservedValueOf<O2>, v3: ObservedValueOf<O3>, v4: ObservedValueOf<O4>, v5: ObservedValueOf<O5>, v6: ObservedValueOf<O6>) => R, scheduler?: SchedulerLike): Observable<R>;
/** @deprecated resultSelector no longer supported, pipe to map instead */
export function combineLatest<O extends ObservableInput<any>, R>(sources: O[], resultSelector: (...args: ObservedValueOf<O>[]) => R, scheduler?: SchedulerLike): Observable<R>;

resultSelector no longer supported, pipe to map instead
use the map operator instead of a result selector

/** @deprecated resultSelector no longer supported, pipe to map instead */
export function combineLatest<O1 extends ObservableInput<any>, R>(v1: O1, resultSelector: (v1: ObservedValueOf<O1>) => R, scheduler?: SchedulerLike): Observable<R>;
/** @deprecated resultSelector no longer supported, pipe to map instead */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, R>(v1: O1, v2: O2, resultSelector: (v1: ObservedValueOf<O1>, v2: ObservedValueOf<O2>) => R, scheduler?: SchedulerLike): Observable<R>;
/** @deprecated resultSelector no longer supported, pipe to map instead */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, R>(v1: O1, v2: O2, v3: O3, resultSelector: (v1: ObservedValueOf<O1>, v2: ObservedValueOf<O2>, v3: ObservedValueOf<O3>) => R, scheduler?: SchedulerLike): Observable<R>;
/** @deprecated resultSelector no longer supported, pipe to map instead */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, O4 extends ObservableInput<any>, R>(v1: O1, v2: O2, v3: O3, v4: O4, resultSelector: (v1: ObservedValueOf<O1>, v2: ObservedValueOf<O2>, v3: ObservedValueOf<O3>, v4: ObservedValueOf<O4>) => R, scheduler?: SchedulerLike): Observable<R>;
/** @deprecated resultSelector no longer supported, pipe to map instead */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, O4 extends ObservableInput<any>, O5 extends ObservableInput<any>, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, resultSelector: (v1: ObservedValueOf<O1>, v2: ObservedValueOf<O2>, v3: ObservedValueOf<O3>, v4: ObservedValueOf<O4>, v5: ObservedValueOf<O5>) => R, scheduler?: SchedulerLike): Observable<R>;
/** @deprecated resultSelector no longer supported, pipe to map instead */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, O4 extends ObservableInput<any>, O5 extends ObservableInput<any>, O6 extends ObservableInput<any>, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, resultSelector: (v1: ObservedValueOf<O1>, v2: ObservedValueOf<O2>, v3: ObservedValueOf<O3>, v4: ObservedValueOf<O4>, v5: ObservedValueOf<O5>, v6: ObservedValueOf<O6>) => R, scheduler?: SchedulerLike): Observable<R>;

resultSelector no longer supported, pipe to map instead
use the map operator instead of a result selector

/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */
export function combineLatest<O1 extends ObservableInput<any>>(sources: [O1], scheduler: SchedulerLike): Observable<[ObservedValueOf<O1>]>;
/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>>(sources: [O1, O2], scheduler: SchedulerLike): Observable<[ObservedValueOf<O1>, ObservedValueOf<O2>]>;
/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>>(sources: [O1, O2, O3], scheduler: SchedulerLike): Observable<[ObservedValueOf<O1>, ObservedValueOf<O2>, ObservedValueOf<O3>]>;
/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, O4 extends ObservableInput<any>>(sources: [O1, O2, O3, O4], scheduler: SchedulerLike): Observable<[ObservedValueOf<O1>, ObservedValueOf<O2>, ObservedValueOf<O3>, ObservedValueOf<O4>]>;
/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, O4 extends ObservableInput<any>, O5 extends ObservableInput<any>>(sources: [O1, O2, O3, O4, O5], scheduler: SchedulerLike): Observable<[ObservedValueOf<O1>, ObservedValueOf<O2>, ObservedValueOf<O3>, ObservedValueOf<O4>, ObservedValueOf<O5>]>;
/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, O4 extends ObservableInput<any>, O5 extends ObservableInput<any>, O6 extends ObservableInput<any>>(sources: [O1, O2, O3, O4, O5, O6], scheduler: SchedulerLike): Observable<[ObservedValueOf<O1>, ObservedValueOf<O2>, ObservedValueOf<O3>, ObservedValueOf<O4>, ObservedValueOf<O5>, ObservedValueOf<O6>]>;
/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */
export function combineLatest<O extends ObservableInput<any>>(sources: O[], scheduler: SchedulerLike): Observable<ObservedValueOf<O>[]>;

Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead
use subscribeOn and/or observeOn instead of passing a scheduler

/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */
export function combineLatest<O1 extends ObservableInput<any>>(v1: O1, scheduler?: SchedulerLike): Observable<[ObservedValueOf<O1>]>;
/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>>(v1: O1, v2: O2, scheduler?: SchedulerLike): Observable<[ObservedValueOf<O1>, ObservedValueOf<O2>]>;
/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>>(v1: O1, v2: O2, v3: O3, scheduler?: SchedulerLike): Observable<[ObservedValueOf<O1>, ObservedValueOf<O2>, ObservedValueOf<O3>]>;
/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, O4 extends ObservableInput<any>>(v1: O1, v2: O2, v3: O3, v4: O4, scheduler?: SchedulerLike): Observable<[ObservedValueOf<O1>, ObservedValueOf<O2>, ObservedValueOf<O3>, ObservedValueOf<O4>]>;
/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, O4 extends ObservableInput<any>, O5 extends ObservableInput<any>>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, scheduler?: SchedulerLike): Observable<[ObservedValueOf<O1>, ObservedValueOf<O2>, ObservedValueOf<O3>, ObservedValueOf<O4>, ObservedValueOf<O5>]>;
/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */
export function combineLatest<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, O4 extends ObservableInput<any>, O5 extends ObservableInput<any>, O6 extends ObservableInput<any>>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, scheduler?: SchedulerLike): Observable<[ObservedValueOf<O1>, ObservedValueOf<O2>, ObservedValueOf<O3>, ObservedValueOf<O4>, ObservedValueOf<O5>, ObservedValueOf<O6>]>;
/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */
export function combineLatest<O extends ObservableInput<any>>(...observables: O[]): Observable<any[]>;
/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */
export function combineLatest<O extends ObservableInput<any>, R>(...observables: Array<ObservableInput<any> | ((...values: Array<any>) => R)>): Observable<R>;

Pass arguments in a single array instead `combineLatest([a, b, c])`
pass arguments in a single array instead `combineLatest([a, b, c])`

/** @deprecated resultSelector no longer supported, pipe to map instead */
export function combineLatest<O extends ObservableInput<any>, R>(array: O[], resultSelector: (...values: ObservedValueOf<O>[]) => R, scheduler?: SchedulerLike): Observable<R>;
/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */
export function combineLatest<O extends ObservableInput<any>>(...observables: Array<O | SchedulerLike>): Observable<any[]>;
/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */
export function combineLatest<O extends ObservableInput<any>, R>(...observables: Array<O | ((...values: ObservedValueOf<O>[]) => R) | SchedulerLike>): Observable<R>;
/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */
export function combineLatest<R>(...observables: Array<ObservableInput<any> | ((...values: Array<any>) => R) | SchedulerLike>): Observable<R>;

resultSelector no longer supported, pipe to map instead
use the map operator instead of a result selector

* @deprecated use `partition` static creation function instead

use `partition` static creation function instead
use the static partition instead

/** @deprecated remove in v8. Passing a scheduler to concat is deprecated, please use {@link scheduled} and {@link concatAll} `scheduled([o1, o2], scheduler).pipe(concatAll())` */
export function concat<O1 extends ObservableInput<any>>(v1: O1, scheduler: SchedulerLike): Observable<ObservedValueOf<O1>>;
/** @deprecated remove in v8. Passing a scheduler to concat is deprecated, please use {@link scheduled} and {@link concatAll} `scheduled([o1, o2], scheduler).pipe(concatAll())` */
export function concat<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>>(v1: O1, v2: O2, scheduler: SchedulerLike): Observable<ObservedValueOf<O1> | ObservedValueOf<O2>>;
/** @deprecated remove in v8. Passing a scheduler to concat is deprecated, please use {@link scheduled} and {@link concatAll} `scheduled([o1, o2], scheduler).pipe(concatAll())` */
export function concat<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>>(v1: O1, v2: O2, v3: O3, scheduler: SchedulerLike): Observable<ObservedValueOf<O1> | ObservedValueOf<O2> | ObservedValueOf<O3>>;
/** @deprecated remove in v8. Passing a scheduler to concat is deprecated, please use {@link scheduled} and {@link concatAll} `scheduled([o1, o2], scheduler).pipe(concatAll())` */
export function concat<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, O4 extends ObservableInput<any>>(v1: O1, v2: O2, v3: O3, v4: O4, scheduler: SchedulerLike): Observable<ObservedValueOf<O1> | ObservedValueOf<O2> | ObservedValueOf<O3> | ObservedValueOf<O4>>;
/** @deprecated remove in v8. Passing a scheduler to concat is deprecated, please use {@link scheduled} and {@link concatAll} `scheduled([o1, o2], scheduler).pipe(concatAll())` */
export function concat<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, O4 extends ObservableInput<any>, O5 extends ObservableInput<any>>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, scheduler: SchedulerLike): Observable<ObservedValueOf<O1> | ObservedValueOf<O2> | ObservedValueOf<O3> | ObservedValueOf<O4> | ObservedValueOf<O5>>;
/** @deprecated remove in v8. Passing a scheduler to concat is deprecated, please use {@link scheduled} and {@link concatAll} `scheduled([o1, o2], scheduler).pipe(concatAll())` */
export function concat<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, O4 extends ObservableInput<any>, O5 extends ObservableInput<any>, O6 extends ObservableInput<any>>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, scheduler: SchedulerLike): Observable<ObservedValueOf<O1> | ObservedValueOf<O2> | ObservedValueOf<O3> | ObservedValueOf<O4> | ObservedValueOf<O5> | ObservedValueOf<O6>>;

remove in v8. Passing a scheduler to concat is deprecated, please use {@link scheduled} and {@link concatAll}
use scheduled and concatAll instead of passing a scheduler

/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/
export function merge<T>(v1: ObservableInput<T>, scheduler: SchedulerLike): Observable<T>;
/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/
export function merge<T>(v1: ObservableInput<T>, concurrent: number, scheduler: SchedulerLike): Observable<T>;
/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/
export function merge<T, T2>(v1: ObservableInput<T>, v2: ObservableInput<T2>, scheduler: SchedulerLike): Observable<T | T2>;
/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/
export function merge<T, T2>(v1: ObservableInput<T>, v2: ObservableInput<T2>, concurrent: number, scheduler: SchedulerLike): Observable<T | T2>;
/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/
export function merge<T, T2, T3>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, scheduler: SchedulerLike): Observable<T | T2 | T3>;
/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/
export function merge<T, T2, T3>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, concurrent: number, scheduler: SchedulerLike): Observable<T | T2 | T3>;
/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/
export function merge<T, T2, T3, T4>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, scheduler: SchedulerLike): Observable<T | T2 | T3 | T4>;
/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/
export function merge<T, T2, T3, T4>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, concurrent: number, scheduler: SchedulerLike): Observable<T | T2 | T3 | T4>;
/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/
export function merge<T, T2, T3, T4, T5>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>, scheduler: SchedulerLike): Observable<T | T2 | T3 | T4 | T5>;
/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/
export function merge<T, T2, T3, T4, T5>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>, concurrent: number, scheduler: SchedulerLike): Observable<T | T2 | T3 | T4 | T5>;
/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/
export function merge<T, T2, T3, T4, T5, T6>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>, v6: ObservableInput<T6>, scheduler: SchedulerLike): Observable<T | T2 | T3 | T4 | T5 | T6>;
/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/
export function merge<T, T2, T3, T4, T5, T6>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>, v6: ObservableInput<T6>, concurrent: number, scheduler: SchedulerLike): Observable<T | T2 | T3 | T4 | T5 | T6>;

use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())
use scheduled and mergeAll instead of passing a scheduler

/** @deprecated remove in v8. Use {@link scheduled} instead `scheduled([], scheduler)` */
export function of(scheduler: SchedulerLike): Observable<never>;
/** @deprecated remove in v8. Use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */
export function of<T>(a: T, scheduler: SchedulerLike): Observable<T>;
/** @deprecated remove in v8. Use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */
export function of<T, T2>(a: T, b: T2, scheduler: SchedulerLike): Observable<T | T2>;
/** @deprecated remove in v8. Use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */
export function of<T, T2, T3>(a: T, b: T2, c: T3, scheduler: SchedulerLike): Observable<T | T2 | T3>;
/** @deprecated remove in v8. Use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */
export function of<T, T2, T3, T4>(a: T, b: T2, c: T3, d: T4, scheduler: SchedulerLike): Observable<T | T2 | T3 | T4>;
/** @deprecated remove in v8. Use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */
export function of<T, T2, T3, T4, T5>(a: T, b: T2, c: T3, d: T4, e: T5, scheduler: SchedulerLike): Observable<T | T2 | T3 | T4 | T5>;
/** @deprecated remove in v8. Use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */
export function of<T, T2, T3, T4, T5, T6>(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, scheduler: SchedulerLike): Observable<T | T2 | T3 | T4 | T5 | T6>;
/** @deprecated remove in v8. Use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */
export function of<T, T2, T3, T4, T5, T6, T7>(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, scheduler: SchedulerLike):
Observable<T | T2 | T3 | T4 | T5 | T6 | T7>;
/** @deprecated remove in v8. Use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */
export function of<T, T2, T3, T4, T5, T6, T7, T8>(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, scheduler: SchedulerLike):
Observable<T | T2 | T3 | T4 | T5 | T6 | T7 | T8>;
/** @deprecated remove in v8. Use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */
export function of<T, T2, T3, T4, T5, T6, T7, T8, T9>(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, i: T9, scheduler: SchedulerLike):
Observable<T | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9>;

remove in v8. Use {@link scheduled} instead `scheduled([a, b, c], scheduler)`
Use scheduled instead

/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */
export function startWith<T>(scheduler: SchedulerLike): MonoTypeOperatorFunction<T>;
/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */
export function startWith<T, D>(v1: D, scheduler: SchedulerLike): OperatorFunction<T, T | D>;
/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */
export function startWith<T, D, E>(v1: D, v2: E, scheduler: SchedulerLike): OperatorFunction<T, T | D | E>;
/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */
export function startWith<T, D, E, F>(v1: D, v2: E, v3: F, scheduler: SchedulerLike): OperatorFunction<T, T | D | E | F>;
/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */
export function startWith<T, D, E, F, G>(v1: D, v2: E, v3: F, v4: G, scheduler: SchedulerLike): OperatorFunction<T, T | D | E | F | G>;
/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */
export function startWith<T, D, E, F, G, H>(v1: D, v2: E, v3: F, v4: G, v5: H, scheduler: SchedulerLike): OperatorFunction<T, T | D | E | F | G | H>;
/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */
export function startWith<T, D, E, F, G, H, I>(v1: D, v2: E, v3: F, v4: G, v5: H, v6: I, scheduler: SchedulerLike): OperatorFunction<T, T | D | E | F | G | H | I>;

use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`)
use scheduled and concatAll instead of passing a scheduler

/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */
export function endWith<T>(scheduler: SchedulerLike): MonoTypeOperatorFunction<T>;
/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */
export function endWith<T, A>(v1: A, scheduler: SchedulerLike): OperatorFunction<T, T | A>;
/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */
export function endWith<T, A, B>(v1: A, v2: B, scheduler: SchedulerLike): OperatorFunction<T, T | A | B>;
/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */
export function endWith<T, A, B, C>(v1: A, v2: B, v3: C, scheduler: SchedulerLike): OperatorFunction<T, T | A | B | C>;
/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */
export function endWith<T, A, B, C, D>(v1: A, v2: B, v3: C, v4: D, scheduler: SchedulerLike): OperatorFunction<T, T | A | B | C | D>;
/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */
export function endWith<T, A, B, C, D, E>(v1: A, v2: B, v3: C, v4: D, v5: E, scheduler: SchedulerLike): OperatorFunction<T, T | A | B | C | D | E>;
/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */
export function endWith<T, A, B, C, D, E, F>(v1: A, v2: B, v3: C, v4: D, v5: E, v6: F, scheduler: SchedulerLike): OperatorFunction<T, T | A | B | C | D | E | F>;
export function endWith<T, A>(v1: A): OperatorFunction<T, T | A>;
export function endWith<T, A, B>(v1: A, v2: B): OperatorFunction<T, T | A | B>;
export function endWith<T, A, B, C>(v1: A, v2: B, v3: C): OperatorFunction<T, T | A | B | C>;
export function endWith<T, A, B, C, D>(v1: A, v2: B, v3: C, v4: D): OperatorFunction<T, T | A | B | C | D>;
export function endWith<T, A, B, C, D, E>(v1: A, v2: B, v3: C, v4: D, v5: E): OperatorFunction<T, T | A | B | C | D | E>;
export function endWith<T, A, B, C, D, E, F>(v1: A, v2: B, v3: C, v4: D, v5: E, v6: F): OperatorFunction<T, T | A | B | C | D | E | F>;
export function endWith<T, Z = T>(...array: Z[]): OperatorFunction<T, T | Z>;
/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */

use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`)
use scheduled and concatAll instead of passing a scheduler

/** @deprecated use {@link scheduled} instead. */

use {@link scheduled} instead.
use scheduled instead

/** @deprecated remove in v8. Do not use generic arguments directly, allow inference or cast with `as` */

remove in v8. Do not use generic arguments directly, allow inference or cast with `as`
do not use generic arguments directly, allow inference or assert with `as`

/** @deprecated Use the version that takes an array of Observables instead */
export function forkJoin<T>(v1: SubscribableOrPromise<T>): Observable<[T]>;
/** @deprecated Use the version that takes an array of Observables instead */
export function forkJoin<T, T2>(v1: ObservableInput<T>, v2: ObservableInput<T2>): Observable<[T, T2]>;
/** @deprecated Use the version that takes an array of Observables instead */
export function forkJoin<T, T2, T3>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>): Observable<[T, T2, T3]>;
/** @deprecated Use the version that takes an array of Observables instead */
export function forkJoin<T, T2, T3, T4>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>): Observable<[T, T2, T3, T4]>;
/** @deprecated Use the version that takes an array of Observables instead */
export function forkJoin<T, T2, T3, T4, T5>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>): Observable<[T, T2, T3, T4, T5]>;
/** @deprecated Use the version that takes an array of Observables instead */
export function forkJoin<T, T2, T3, T4, T5, T6>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>, v6: ObservableInput<T6>): Observable<[T, T2, T3, T4, T5, T6]>;

Use the version that takes an array of Observables instead
pass arguments in a single array instead `forkJoin([a, b, c])`

/** @deprecated remove in v8. Passing a scheduler to concat is deprecated, please use {@link scheduled} and {@link concatAll} `scheduled([o1, o2], scheduler).pipe(concatAll())` */
export function concat<O1 extends ObservableInput<any>>(v1: O1, scheduler: SchedulerLike): Observable<ObservedValueOf<O1>>;
/** @deprecated remove in v8. Passing a scheduler to concat is deprecated, please use {@link scheduled} and {@link concatAll} `scheduled([o1, o2], scheduler).pipe(concatAll())` */
export function concat<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>>(v1: O1, v2: O2, scheduler: SchedulerLike): Observable<ObservedValueOf<O1> | ObservedValueOf<O2>>;
/** @deprecated remove in v8. Passing a scheduler to concat is deprecated, please use {@link scheduled} and {@link concatAll} `scheduled([o1, o2], scheduler).pipe(concatAll())` */
export function concat<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>>(v1: O1, v2: O2, v3: O3, scheduler: SchedulerLike): Observable<ObservedValueOf<O1> | ObservedValueOf<O2> | ObservedValueOf<O3>>;
/** @deprecated remove in v8. Passing a scheduler to concat is deprecated, please use {@link scheduled} and {@link concatAll} `scheduled([o1, o2], scheduler).pipe(concatAll())` */
export function concat<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, O4 extends ObservableInput<any>>(v1: O1, v2: O2, v3: O3, v4: O4, scheduler: SchedulerLike): Observable<ObservedValueOf<O1> | ObservedValueOf<O2> | ObservedValueOf<O3> | ObservedValueOf<O4>>;
/** @deprecated remove in v8. Passing a scheduler to concat is deprecated, please use {@link scheduled} and {@link concatAll} `scheduled([o1, o2], scheduler).pipe(concatAll())` */
export function concat<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>, O4 extends ObservableInput<any>, O5 extends ObservableInput<any>>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, scheduler: SchedulerLike): Observable<ObservedValueOf<O1> | ObservedValueOf<O2> | ObservedValueOf<O3> | ObservedValueOf<O4> | ObservedValueOf<O5>>;
/** @deprecated remove in v8. Passing a scheduler to concat is deprecated, please use {@link scheduled} and {@link concatAll} `scheduled([o1, o2], scheduler).pipe(concatAll())` */

remove in v8. Passing a scheduler to concat is deprecated, please use {@link scheduled} and {@link concatAll} `scheduled([o1, o2], scheduler).pipe(concatAll())`
use scheduled and concatAll instead of passing a scheduler

* @deprecated NotificationKind is deprecated as const enums are not compatible with isolated modules. Use a string literal instead.

NotificationKind is deprecated as const enums are not compatible with isolated modules. Use a string literal instead.
use a string literal instead of a const enum

* @deprecated remove in v8. Not for public use.

remove in v8. Not for public use.
internal use only

* @deprecated remove in v8. Not for public use.

remove in v8. Not for public use.
internal use only

/** @deprecated remove in v8. `frameTimeFactor` is not used in VirtualTimeScheduler directly. */

remove in v8. `frameTimeFactor` is not used in VirtualTimeScheduler directly.
no longer used directly

* @deprecated remove in v8. Should be a private API.

remove in v8. Should be a private API.
internal use only

* @param {function (state: S): T} resultSelector Selector function for results produced in the sequence. (deprecated)

(This would need an overload signature without the resultSelector. AFAICT, ATM, it cannot be deprecated.)
use the map operator instead of a result selector

@BioPhoton
Copy link
Contributor Author

@cartant

I changed the sentence:
"use the map operator, on the inner observable, instead of a result selector"
to
"use ${otherOperator} with an inner map instead of a result selector"
for all 'xMapTo' operators.

I did it because the refactoring is different for xMapTo operators and we need to use other operators.

@BioPhoton
Copy link
Contributor Author

BioPhoton commented Jan 3, 2020

@cartant I would need some help with the listed messages.
As before the new suggested message in the code is the information in question:

  • Deprecation name
    • SourceLink
    • Link to current message in code
    • Suggested new message in code based on your previous message style or 'TODO' if I need more than just an ok
    • Reason
    • NOTES: Some notes

Please provide information for entries marked with TODO, answer entries marked with NOTES:
and change my suggested messages if needed.

Thanks for your time front off!


Copy link
Member

@niklas-wortmann niklas-wortmann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't checkout the pr so far because I really struggle with understanding the code at all. It's so bloated by comments. But additionally I think we need to reconsider the approach to tackle this problem. I barely believe one will be able to maintain the code at all. Let's have a chat offline about how to go on with this.

@BioPhoton
Copy link
Contributor Author

Hi @jwo719 !

Thanks you found time to take a look!

As this PR is hanging around quite a while without any feedback at all I'm sure a lot of things need to be adopted!

I'll update your first feedback and would be happy to get more after the first fixes.

@BioPhoton
Copy link
Contributor Author

@jwo719 Resolved all requests.

The comment about weird formatting could be discussed to adjust my ide to the standard.

I'm happy to get more detailed feedback on the current status

@BioPhoton
Copy link
Contributor Author

BioPhoton commented Jan 27, 2020

Todo discussed in the first feedback from @JOW719:

  • split components with more than 40 lines of HTML into separate HTML and TS files
    • deprication table formatted :)
    • migration-timeline.component.ts
  • renamde then code-example component to code-comparison
  • prefix all component with rxjs
  • formatting:
    • empty interfaces should open and close the '{' in the same line
  • use the linter for the src folder to lint the docs project

Other things:

  • source link to target blank
  • Ensure URL encoded UID === to stored UID e.g. 8.0.0_breakingChange-symbol-%24%24rxSubscriber-removed !== `8.0.0_breakingChange-symbol-$$rxSubscriber-removed``

Copy link
Member

@niklas-wortmann niklas-wortmann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code itself looks pretty fine I just requested some subtle changes, but it's not compiling right now so I couldn't test it manually and also I need to test it from an accessibility point of view. Additionally, I didn't saw any test, I'd really appreciate some unit tests

@BioPhoton BioPhoton force-pushed the 4776_Add-doc-URLs-to-deprecation-messages branch from 13fc8d9 to 6b92268 Compare April 6, 2020 05:58
@BioPhoton BioPhoton force-pushed the 4776_Add-doc-URLs-to-deprecation-messages branch from 781af61 to 0dc8c2d Compare May 2, 2020 13:00
@niklas-wortmann niklas-wortmann added AGENDA ITEM Flagged for discussion at core team meetings and removed AGENDA ITEM Flagged for discussion at core team meetings labels May 5, 2020
@niklas-wortmann
Copy link
Member

@BioPhoton we talked about this already, this is an amazing pr, it would just be very difficult for us to maintain this properly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants