Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / rxjs / src / internal / types.ts
1 import { Observable } from './Observable';
2 import { Subscription } from './Subscription';
3
4 /** OPERATOR INTERFACES */
5
6 export interface UnaryFunction<T, R> { (source: T): R; }
7
8 export interface OperatorFunction<T, R> extends UnaryFunction<Observable<T>, Observable<R>> {}
9
10 export type FactoryOrValue<T> = T | (() => T);
11
12 export interface MonoTypeOperatorFunction<T> extends OperatorFunction<T, T> {}
13
14 export interface Timestamp<T> {
15   value: T;
16   timestamp: number;
17 }
18
19 export interface TimeInterval<T> {
20   value: T;
21   interval: number;
22 }
23
24 /** SUBSCRIPTION INTERFACES */
25
26 export interface Unsubscribable {
27   unsubscribe(): void;
28 }
29
30 export type TeardownLogic = Unsubscribable | Function | void;
31
32 export interface SubscriptionLike extends Unsubscribable {
33   unsubscribe(): void;
34   readonly closed: boolean;
35 }
36
37 export type SubscribableOrPromise<T> = Subscribable<T> | Subscribable<never> | PromiseLike<T> | InteropObservable<T>;
38
39 /** OBSERVABLE INTERFACES */
40
41 export interface Subscribable<T> {
42   subscribe(observer?: PartialObserver<T>): Unsubscribable;
43   /** @deprecated Use an observer instead of a complete callback */
44   subscribe(next: null | undefined, error: null | undefined, complete: () => void): Unsubscribable;
45   /** @deprecated Use an observer instead of an error callback */
46   subscribe(next: null | undefined, error: (error: any) => void, complete?: () => void): Unsubscribable;
47   /** @deprecated Use an observer instead of a complete callback */
48   subscribe(next: (value: T) => void, error: null | undefined, complete: () => void): Unsubscribable;
49   subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Unsubscribable;
50 }
51
52 export type ObservableInput<T> = SubscribableOrPromise<T> | ArrayLike<T> | Iterable<T>;
53
54 /** @deprecated use {@link InteropObservable } */
55 export type ObservableLike<T> = InteropObservable<T>;
56
57 export type InteropObservable<T> = { [Symbol.observable]: () => Subscribable<T>; };
58
59 /** OBSERVER INTERFACES */
60
61 export interface NextObserver<T> {
62   closed?: boolean;
63   next: (value: T) => void;
64   error?: (err: any) => void;
65   complete?: () => void;
66 }
67
68 export interface ErrorObserver<T> {
69   closed?: boolean;
70   next?: (value: T) => void;
71   error: (err: any) => void;
72   complete?: () => void;
73 }
74
75 export interface CompletionObserver<T> {
76   closed?: boolean;
77   next?: (value: T) => void;
78   error?: (err: any) => void;
79   complete: () => void;
80 }
81
82 export type PartialObserver<T> = NextObserver<T> | ErrorObserver<T> | CompletionObserver<T>;
83
84 export interface Observer<T> {
85   closed?: boolean;
86   next: (value: T) => void;
87   error: (err: any) => void;
88   complete: () => void;
89 }
90
91 /** SCHEDULER INTERFACES */
92
93 export interface SchedulerLike {
94   now(): number;
95   schedule<T>(work: (this: SchedulerAction<T>, state?: T) => void, delay?: number, state?: T): Subscription;
96 }
97 export interface SchedulerAction<T> extends Subscription {
98   schedule(state?: T, delay?: number): Subscription;
99 }
100
101 export type ObservedValueOf<O> = O extends ObservableInput<infer T> ? T : never;
102
103 export type ObservedValuesFromArray<X> = X extends Array<ObservableInput<infer T>> ? T : never;