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